@powerlines/core 0.15.0 → 0.15.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.
Files changed (401) hide show
  1. package/dist/constants/api.cjs +6 -5
  2. package/dist/constants/api.d.cts +3 -3
  3. package/dist/constants/api.d.cts.map +1 -1
  4. package/dist/constants/api.d.mts +3 -3
  5. package/dist/constants/api.d.mts.map +1 -1
  6. package/dist/constants/api.mjs +4 -4
  7. package/dist/constants/api.mjs.map +1 -1
  8. package/dist/constants/commands.cjs +3 -2
  9. package/dist/constants/commands.d.cts +1 -1
  10. package/dist/constants/commands.d.mts +1 -1
  11. package/dist/constants/commands.mjs +2 -2
  12. package/dist/constants/commands.mjs.map +1 -1
  13. package/dist/constants/devtools.cjs +23 -0
  14. package/dist/constants/devtools.d.cts +13 -0
  15. package/dist/constants/devtools.d.cts.map +1 -0
  16. package/dist/constants/devtools.d.mts +13 -0
  17. package/dist/constants/devtools.d.mts.map +1 -0
  18. package/dist/constants/devtools.mjs +14 -0
  19. package/dist/constants/devtools.mjs.map +1 -0
  20. package/dist/constants/environments.cjs +1 -0
  21. package/dist/constants/extensions.cjs +21 -0
  22. package/dist/constants/extensions.d.cts +5 -0
  23. package/dist/constants/extensions.d.cts.map +1 -0
  24. package/dist/constants/extensions.d.mts +5 -0
  25. package/dist/constants/extensions.d.mts.map +1 -0
  26. package/dist/constants/extensions.mjs +20 -0
  27. package/dist/constants/extensions.mjs.map +1 -0
  28. package/dist/constants/fs.cjs +1 -0
  29. package/dist/constants/hooks.cjs +1 -0
  30. package/dist/constants/index.cjs +48 -30
  31. package/dist/constants/index.d.cts +5 -3
  32. package/dist/constants/index.d.mts +5 -3
  33. package/dist/constants/index.mjs +5 -3
  34. package/dist/constants/log-level.cjs +90 -0
  35. package/dist/constants/log-level.d.cts +63 -0
  36. package/dist/constants/log-level.d.cts.map +1 -0
  37. package/dist/constants/log-level.d.mts +63 -0
  38. package/dist/constants/log-level.d.mts.map +1 -0
  39. package/dist/constants/log-level.mjs +82 -0
  40. package/dist/constants/log-level.mjs.map +1 -0
  41. package/dist/constants/meta.cjs +1 -0
  42. package/dist/constants/plugin.cjs +3 -2
  43. package/dist/constants/plugin.d.cts +2 -2
  44. package/dist/constants/plugin.d.mts +2 -2
  45. package/dist/context/base-context.cjs +127 -0
  46. package/dist/context/base-context.d.cts +81 -0
  47. package/dist/context/base-context.d.cts.map +1 -0
  48. package/dist/context/base-context.d.mts +81 -0
  49. package/dist/context/base-context.d.mts.map +1 -0
  50. package/dist/context/base-context.mjs +125 -0
  51. package/dist/context/base-context.mjs.map +1 -0
  52. package/dist/context/context.cjs +934 -0
  53. package/dist/context/context.d.cts +369 -0
  54. package/dist/context/context.d.cts.map +1 -0
  55. package/dist/context/context.d.mts +369 -0
  56. package/dist/context/context.d.mts.map +1 -0
  57. package/dist/context/context.mjs +932 -0
  58. package/dist/context/context.mjs.map +1 -0
  59. package/dist/context/environment-context.cjs +219 -0
  60. package/dist/context/environment-context.d.cts +100 -0
  61. package/dist/context/environment-context.d.cts.map +1 -0
  62. package/dist/context/environment-context.d.mts +100 -0
  63. package/dist/context/environment-context.d.mts.map +1 -0
  64. package/dist/context/environment-context.mjs +218 -0
  65. package/dist/context/environment-context.mjs.map +1 -0
  66. package/dist/context/execution-context.cjs +230 -0
  67. package/dist/context/execution-context.d.cts +101 -0
  68. package/dist/context/execution-context.d.cts.map +1 -0
  69. package/dist/context/execution-context.d.mts +101 -0
  70. package/dist/context/execution-context.d.mts.map +1 -0
  71. package/dist/context/execution-context.mjs +228 -0
  72. package/dist/context/execution-context.mjs.map +1 -0
  73. package/dist/context/index.cjs +12 -0
  74. package/dist/context/index.d.cts +6 -0
  75. package/dist/context/index.d.mts +6 -0
  76. package/dist/context/index.mjs +7 -0
  77. package/dist/context/plugin-context.cjs +83 -0
  78. package/dist/context/plugin-context.d.cts +18 -0
  79. package/dist/context/plugin-context.d.cts.map +1 -0
  80. package/dist/context/plugin-context.d.mts +18 -0
  81. package/dist/context/plugin-context.d.mts.map +1 -0
  82. package/dist/context/plugin-context.mjs +82 -0
  83. package/dist/context/plugin-context.mjs.map +1 -0
  84. package/dist/index.cjs +62 -9
  85. package/dist/index.d.cts +20 -9
  86. package/dist/index.d.mts +20 -9
  87. package/dist/index.mjs +17 -5
  88. package/dist/lib/config.cjs +160 -15
  89. package/dist/lib/config.d.cts +92 -6
  90. package/dist/lib/config.d.cts.map +1 -1
  91. package/dist/lib/config.d.mts +92 -6
  92. package/dist/lib/config.d.mts.map +1 -1
  93. package/dist/lib/config.mjs +154 -16
  94. package/dist/lib/config.mjs.map +1 -1
  95. package/dist/lib/context-helpers.cjs +43 -0
  96. package/dist/lib/context-helpers.d.cts +19 -0
  97. package/dist/lib/context-helpers.d.cts.map +1 -0
  98. package/dist/lib/context-helpers.d.mts +19 -0
  99. package/dist/lib/context-helpers.d.mts.map +1 -0
  100. package/dist/lib/context-helpers.mjs +41 -0
  101. package/dist/lib/context-helpers.mjs.map +1 -0
  102. package/dist/lib/entry.cjs +5 -5
  103. package/dist/lib/entry.d.cts +5 -5
  104. package/dist/lib/entry.d.cts.map +1 -1
  105. package/dist/lib/entry.d.mts +5 -5
  106. package/dist/lib/entry.d.mts.map +1 -1
  107. package/dist/lib/entry.mjs +5 -5
  108. package/dist/lib/entry.mjs.map +1 -1
  109. package/dist/lib/environment.cjs +72 -0
  110. package/dist/lib/environment.d.cts +12 -0
  111. package/dist/lib/environment.d.cts.map +1 -0
  112. package/dist/lib/environment.d.mts +12 -0
  113. package/dist/lib/environment.d.mts.map +1 -0
  114. package/dist/lib/environment.mjs +67 -0
  115. package/dist/lib/environment.mjs.map +1 -0
  116. package/dist/lib/events.cjs +43 -0
  117. package/dist/lib/events.d.cts +10 -0
  118. package/dist/lib/events.d.cts.map +1 -0
  119. package/dist/lib/events.d.mts +10 -0
  120. package/dist/lib/events.d.mts.map +1 -0
  121. package/dist/lib/events.mjs +42 -0
  122. package/dist/lib/events.mjs.map +1 -0
  123. package/dist/lib/generate-types.cjs +371 -0
  124. package/dist/lib/generate-types.d.cts +67 -0
  125. package/dist/lib/generate-types.d.cts.map +1 -0
  126. package/dist/lib/generate-types.d.mts +67 -0
  127. package/dist/lib/generate-types.d.mts.map +1 -0
  128. package/dist/lib/generate-types.mjs +368 -0
  129. package/dist/lib/generate-types.mjs.map +1 -0
  130. package/dist/lib/hooks.cjs +152 -0
  131. package/dist/lib/hooks.d.cts +28 -0
  132. package/dist/lib/hooks.d.cts.map +1 -0
  133. package/dist/lib/hooks.d.mts +28 -0
  134. package/dist/lib/hooks.d.mts.map +1 -0
  135. package/dist/lib/hooks.mjs +147 -0
  136. package/dist/lib/hooks.mjs.map +1 -0
  137. package/dist/lib/index.cjs +64 -9
  138. package/dist/lib/index.d.cts +15 -3
  139. package/dist/lib/index.d.mts +15 -3
  140. package/dist/lib/index.mjs +19 -5
  141. package/dist/lib/install-dependencies.cjs +25 -0
  142. package/dist/lib/install-dependencies.d.cts +12 -0
  143. package/dist/lib/install-dependencies.d.cts.map +1 -0
  144. package/dist/lib/install-dependencies.d.mts +12 -0
  145. package/dist/lib/install-dependencies.d.mts.map +1 -0
  146. package/dist/lib/install-dependencies.mjs +24 -0
  147. package/dist/lib/install-dependencies.mjs.map +1 -0
  148. package/dist/lib/meta.cjs +57 -0
  149. package/dist/lib/meta.d.cts +34 -0
  150. package/dist/lib/meta.d.cts.map +1 -0
  151. package/dist/lib/meta.d.mts +34 -0
  152. package/dist/lib/meta.d.mts.map +1 -0
  153. package/dist/lib/meta.mjs +54 -0
  154. package/dist/lib/meta.mjs.map +1 -0
  155. package/dist/lib/plugins.cjs +150 -0
  156. package/dist/lib/plugins.d.cts +40 -0
  157. package/dist/lib/plugins.d.cts.map +1 -0
  158. package/dist/lib/plugins.d.mts +40 -0
  159. package/dist/lib/plugins.d.mts.map +1 -0
  160. package/dist/lib/plugins.mjs +146 -0
  161. package/dist/lib/plugins.mjs.map +1 -0
  162. package/dist/lib/resolver.cjs +35 -0
  163. package/dist/lib/resolver.d.cts +21 -0
  164. package/dist/lib/resolver.d.cts.map +1 -0
  165. package/dist/lib/resolver.d.mts +21 -0
  166. package/dist/lib/resolver.d.mts.map +1 -0
  167. package/dist/lib/resolver.mjs +33 -0
  168. package/dist/lib/resolver.mjs.map +1 -0
  169. package/dist/lib/schemas.cjs +9 -0
  170. package/dist/lib/schemas.d.cts +2 -0
  171. package/dist/lib/schemas.d.mts +2 -0
  172. package/dist/lib/schemas.mjs +3 -0
  173. package/dist/lib/streaming-channel.cjs +260 -0
  174. package/dist/lib/streaming-channel.d.cts +133 -0
  175. package/dist/lib/streaming-channel.d.cts.map +1 -0
  176. package/dist/lib/streaming-channel.d.mts +133 -0
  177. package/dist/lib/streaming-channel.d.mts.map +1 -0
  178. package/dist/lib/streaming-channel.mjs +258 -0
  179. package/dist/lib/streaming-channel.mjs.map +1 -0
  180. package/dist/lib/typescript/index.cjs +16 -0
  181. package/dist/lib/typescript/index.d.cts +3 -0
  182. package/dist/lib/typescript/index.d.mts +3 -0
  183. package/dist/lib/typescript/index.mjs +4 -0
  184. package/dist/lib/typescript/ts-morph.cjs +105 -0
  185. package/dist/lib/typescript/ts-morph.d.cts +38 -0
  186. package/dist/lib/typescript/ts-morph.d.cts.map +1 -0
  187. package/dist/lib/typescript/ts-morph.d.mts +38 -0
  188. package/dist/lib/typescript/ts-morph.d.mts.map +1 -0
  189. package/dist/lib/typescript/ts-morph.mjs +102 -0
  190. package/dist/lib/typescript/ts-morph.mjs.map +1 -0
  191. package/dist/lib/typescript/tsconfig.cjs +253 -0
  192. package/dist/lib/typescript/tsconfig.d.cts +77 -0
  193. package/dist/lib/typescript/tsconfig.d.cts.map +1 -0
  194. package/dist/lib/typescript/tsconfig.d.mts +77 -0
  195. package/dist/lib/typescript/tsconfig.d.mts.map +1 -0
  196. package/dist/lib/typescript/tsconfig.mjs +240 -0
  197. package/dist/lib/typescript/tsconfig.mjs.map +1 -0
  198. package/dist/lib/unplugin/helpers.cjs +2 -2
  199. package/dist/lib/unplugin/module-resolution.cjs +18 -18
  200. package/dist/lib/unplugin/module-resolution.d.cts +2 -2
  201. package/dist/lib/unplugin/module-resolution.d.cts.map +1 -1
  202. package/dist/lib/unplugin/module-resolution.d.mts +2 -2
  203. package/dist/lib/unplugin/module-resolution.d.mts.map +1 -1
  204. package/dist/lib/unplugin/module-resolution.mjs +18 -18
  205. package/dist/lib/unplugin/module-resolution.mjs.map +1 -1
  206. package/dist/lib/unplugin/plugin.cjs +55 -62
  207. package/dist/lib/unplugin/plugin.d.cts +11 -12
  208. package/dist/lib/unplugin/plugin.d.cts.map +1 -1
  209. package/dist/lib/unplugin/plugin.d.mts +11 -12
  210. package/dist/lib/unplugin/plugin.d.mts.map +1 -1
  211. package/dist/lib/unplugin/plugin.mjs +55 -62
  212. package/dist/lib/unplugin/plugin.mjs.map +1 -1
  213. package/dist/lib/utilities/file-header.cjs +2 -2
  214. package/dist/lib/utilities/file-header.mjs +2 -2
  215. package/dist/lib/utilities/file-header.mjs.map +1 -1
  216. package/dist/lib/utilities/format.cjs +1 -1
  217. package/dist/lib/utilities/format.mjs +1 -1
  218. package/dist/lib/utilities/index.cjs +2 -2
  219. package/dist/lib/utilities/index.mjs +2 -2
  220. package/dist/lib/utilities/write-file.cjs +1 -2
  221. package/dist/lib/utilities/write-file.d.cts +1 -1
  222. package/dist/lib/utilities/write-file.d.cts.map +1 -1
  223. package/dist/lib/utilities/write-file.d.mts +1 -1
  224. package/dist/lib/utilities/write-file.d.mts.map +1 -1
  225. package/dist/lib/utilities/write-file.mjs +1 -2
  226. package/dist/lib/utilities/write-file.mjs.map +1 -1
  227. package/dist/lib/vfs.cjs +1104 -0
  228. package/dist/lib/vfs.d.cts +321 -0
  229. package/dist/lib/vfs.d.cts.map +1 -0
  230. package/dist/lib/vfs.d.mts +321 -0
  231. package/dist/lib/vfs.d.mts.map +1 -0
  232. package/dist/lib/vfs.mjs +1102 -0
  233. package/dist/lib/vfs.mjs.map +1 -0
  234. package/dist/plugin-base.cjs +1 -1
  235. package/dist/plugin-base.mjs +1 -1
  236. package/dist/plugin-base.mjs.map +1 -1
  237. package/dist/plugin-utils/build-helpers.cjs +2 -2
  238. package/dist/plugin-utils/build-helpers.d.cts +2 -2
  239. package/dist/plugin-utils/build-helpers.d.cts.map +1 -1
  240. package/dist/plugin-utils/build-helpers.d.mts +2 -2
  241. package/dist/plugin-utils/build-helpers.d.mts.map +1 -1
  242. package/dist/plugin-utils/build-helpers.mjs +2 -2
  243. package/dist/plugin-utils/build-helpers.mjs.map +1 -1
  244. package/dist/plugin-utils/context-helpers.cjs +22 -12
  245. package/dist/plugin-utils/context-helpers.d.cts +9 -1
  246. package/dist/plugin-utils/context-helpers.d.cts.map +1 -1
  247. package/dist/plugin-utils/context-helpers.d.mts +9 -1
  248. package/dist/plugin-utils/context-helpers.d.mts.map +1 -1
  249. package/dist/plugin-utils/context-helpers.mjs +22 -13
  250. package/dist/plugin-utils/context-helpers.mjs.map +1 -1
  251. package/dist/plugin-utils/filter.cjs +13 -5
  252. package/dist/plugin-utils/filter.d.cts +2 -1
  253. package/dist/plugin-utils/filter.d.cts.map +1 -1
  254. package/dist/plugin-utils/filter.d.mts +2 -1
  255. package/dist/plugin-utils/filter.d.mts.map +1 -1
  256. package/dist/plugin-utils/filter.mjs +13 -6
  257. package/dist/plugin-utils/filter.mjs.map +1 -1
  258. package/dist/plugin-utils/format.cjs +44 -0
  259. package/dist/plugin-utils/format.d.cts +11 -0
  260. package/dist/plugin-utils/format.d.cts.map +1 -0
  261. package/dist/plugin-utils/format.d.mts +11 -0
  262. package/dist/plugin-utils/format.d.mts.map +1 -0
  263. package/dist/plugin-utils/format.mjs +43 -0
  264. package/dist/plugin-utils/format.mjs.map +1 -0
  265. package/dist/plugin-utils/helpers.cjs +6 -6
  266. package/dist/plugin-utils/helpers.d.cts +15 -15
  267. package/dist/plugin-utils/helpers.d.cts.map +1 -1
  268. package/dist/plugin-utils/helpers.d.mts +15 -15
  269. package/dist/plugin-utils/helpers.d.mts.map +1 -1
  270. package/dist/plugin-utils/helpers.mjs +1 -1
  271. package/dist/plugin-utils/helpers.mjs.map +1 -1
  272. package/dist/plugin-utils/index.cjs +34 -4
  273. package/dist/plugin-utils/index.d.cts +7 -4
  274. package/dist/plugin-utils/index.d.mts +7 -4
  275. package/dist/plugin-utils/index.mjs +9 -6
  276. package/dist/plugin-utils/install.cjs +47 -0
  277. package/dist/plugin-utils/install.d.cts +23 -0
  278. package/dist/plugin-utils/install.d.cts.map +1 -0
  279. package/dist/plugin-utils/install.d.mts +23 -0
  280. package/dist/plugin-utils/install.d.mts.map +1 -0
  281. package/dist/plugin-utils/install.mjs +45 -0
  282. package/dist/plugin-utils/install.mjs.map +1 -0
  283. package/dist/plugin-utils/logging.cjs +588 -1
  284. package/dist/plugin-utils/logging.d.cts +93 -1
  285. package/dist/plugin-utils/logging.d.cts.map +1 -1
  286. package/dist/plugin-utils/logging.d.mts +93 -1
  287. package/dist/plugin-utils/logging.d.mts.map +1 -1
  288. package/dist/plugin-utils/logging.mjs +572 -1
  289. package/dist/plugin-utils/logging.mjs.map +1 -1
  290. package/dist/plugin-utils/merge.cjs +1 -1
  291. package/dist/plugin-utils/merge.mjs +1 -1
  292. package/dist/plugin-utils/modules.cjs +1 -1
  293. package/dist/plugin-utils/modules.mjs +1 -1
  294. package/dist/plugin-utils/modules.mjs.map +1 -1
  295. package/dist/plugin-utils/paths.cjs +6 -2
  296. package/dist/plugin-utils/paths.mjs +6 -2
  297. package/dist/plugin-utils/paths.mjs.map +1 -1
  298. package/dist/plugin-utils/virtual.cjs +80 -0
  299. package/dist/plugin-utils/virtual.d.cts +69 -0
  300. package/dist/plugin-utils/virtual.d.cts.map +1 -0
  301. package/dist/plugin-utils/virtual.d.mts +69 -0
  302. package/dist/plugin-utils/virtual.d.mts.map +1 -0
  303. package/dist/plugin-utils/virtual.mjs +73 -0
  304. package/dist/plugin-utils/virtual.mjs.map +1 -0
  305. package/dist/schemas/fs.cjs +232 -0
  306. package/dist/schemas/fs.d.cts +127 -0
  307. package/dist/schemas/fs.d.cts.map +1 -0
  308. package/dist/schemas/fs.d.mts +127 -0
  309. package/dist/schemas/fs.d.mts.map +1 -0
  310. package/dist/schemas/fs.mjs +226 -0
  311. package/dist/schemas/fs.mjs.map +1 -0
  312. package/dist/storage/base.cjs +216 -0
  313. package/dist/storage/base.d.cts +201 -0
  314. package/dist/storage/base.d.cts.map +1 -0
  315. package/dist/storage/base.d.mts +201 -0
  316. package/dist/storage/base.d.mts.map +1 -0
  317. package/dist/storage/base.mjs +215 -0
  318. package/dist/storage/base.mjs.map +1 -0
  319. package/dist/storage/file-system.cjs +180 -0
  320. package/dist/storage/file-system.d.cts +129 -0
  321. package/dist/storage/file-system.d.cts.map +1 -0
  322. package/dist/storage/file-system.d.mts +129 -0
  323. package/dist/storage/file-system.d.mts.map +1 -0
  324. package/dist/storage/file-system.mjs +179 -0
  325. package/dist/storage/file-system.mjs.map +1 -0
  326. package/dist/storage/helpers.cjs +37 -0
  327. package/dist/storage/helpers.d.cts +25 -0
  328. package/dist/storage/helpers.d.cts.map +1 -0
  329. package/dist/storage/helpers.d.mts +25 -0
  330. package/dist/storage/helpers.d.mts.map +1 -0
  331. package/dist/storage/helpers.mjs +34 -0
  332. package/dist/storage/helpers.mjs.map +1 -0
  333. package/dist/storage/index.cjs +12 -0
  334. package/dist/storage/index.d.cts +5 -0
  335. package/dist/storage/index.d.mts +5 -0
  336. package/dist/storage/index.mjs +6 -0
  337. package/dist/storage/virtual.cjs +98 -0
  338. package/dist/storage/virtual.d.cts +80 -0
  339. package/dist/storage/virtual.d.cts.map +1 -0
  340. package/dist/storage/virtual.d.mts +80 -0
  341. package/dist/storage/virtual.d.mts.map +1 -0
  342. package/dist/storage/virtual.mjs +97 -0
  343. package/dist/storage/virtual.mjs.map +1 -0
  344. package/dist/types/api.d.cts +18 -152
  345. package/dist/types/api.d.cts.map +1 -1
  346. package/dist/types/api.d.mts +18 -152
  347. package/dist/types/api.d.mts.map +1 -1
  348. package/dist/types/config.d.cts +194 -135
  349. package/dist/types/config.d.cts.map +1 -1
  350. package/dist/types/config.d.mts +195 -136
  351. package/dist/types/config.d.mts.map +1 -1
  352. package/dist/types/context.d.cts +140 -130
  353. package/dist/types/context.d.cts.map +1 -1
  354. package/dist/types/context.d.mts +143 -133
  355. package/dist/types/context.d.mts.map +1 -1
  356. package/dist/types/fs.d.mts +1 -1
  357. package/dist/types/index.d.cts +5 -6
  358. package/dist/types/index.d.mts +5 -6
  359. package/dist/types/logging.d.cts +161 -0
  360. package/dist/types/logging.d.cts.map +1 -0
  361. package/dist/types/logging.d.mts +161 -0
  362. package/dist/types/logging.d.mts.map +1 -0
  363. package/dist/types/plugin.d.cts +6 -9
  364. package/dist/types/plugin.d.cts.map +1 -1
  365. package/dist/types/plugin.d.mts +6 -9
  366. package/dist/types/plugin.d.mts.map +1 -1
  367. package/dist/types/tsconfig.d.mts +1 -1
  368. package/dist/types/unplugin.d.cts +6 -27
  369. package/dist/types/unplugin.d.cts.map +1 -1
  370. package/dist/types/unplugin.d.mts +6 -27
  371. package/dist/types/unplugin.d.mts.map +1 -1
  372. package/package.json +259 -457
  373. package/schemas/fs.capnp +42 -0
  374. package/dist/constants/virtual-modules.cjs +0 -8
  375. package/dist/constants/virtual-modules.d.cts +0 -6
  376. package/dist/constants/virtual-modules.d.cts.map +0 -1
  377. package/dist/constants/virtual-modules.d.mts +0 -6
  378. package/dist/constants/virtual-modules.d.mts.map +0 -1
  379. package/dist/constants/virtual-modules.mjs +0 -7
  380. package/dist/constants/virtual-modules.mjs.map +0 -1
  381. package/dist/lib/logger.cjs +0 -99
  382. package/dist/lib/logger.d.cts +0 -53
  383. package/dist/lib/logger.d.cts.map +0 -1
  384. package/dist/lib/logger.d.mts +0 -53
  385. package/dist/lib/logger.d.mts.map +0 -1
  386. package/dist/lib/logger.mjs +0 -93
  387. package/dist/lib/logger.mjs.map +0 -1
  388. package/dist/types/_internal.cjs +0 -0
  389. package/dist/types/_internal.d.cts +0 -106
  390. package/dist/types/_internal.d.cts.map +0 -1
  391. package/dist/types/_internal.d.mts +0 -106
  392. package/dist/types/_internal.d.mts.map +0 -1
  393. package/dist/types/_internal.mjs +0 -1
  394. package/dist/types/commands.d.cts +0 -16
  395. package/dist/types/commands.d.cts.map +0 -1
  396. package/dist/types/commands.d.mts +0 -16
  397. package/dist/types/commands.d.mts.map +0 -1
  398. package/dist/types/utils.d.cts +0 -9
  399. package/dist/types/utils.d.cts.map +0 -1
  400. package/dist/types/utils.d.mts +0 -9
  401. package/dist/types/utils.d.mts.map +0 -1
@@ -0,0 +1,133 @@
1
+ import { EventEmitter } from "devframe/types";
2
+
3
+ //#region src/lib/streaming-channel.d.ts
4
+ /**
5
+ * Serialized error shape sent over the wire when a stream ends with a failure.
6
+ * Stays JSON-safe so the strict-JSON encoder can carry it without coercion.
7
+ */
8
+ interface StreamErrorPayload {
9
+ name: string;
10
+ message: string;
11
+ }
12
+ /**
13
+ * Single buffered chunk in the server-side ring buffer.
14
+ *
15
+ * Sequence numbers start at 1 and increment per write. Subscribers track
16
+ * `lastSeenSeq` and ask for `afterSeq` on resubscribe so the server can
17
+ * replay any chunks the client missed during a brief disconnect.
18
+ */
19
+ interface BufferedChunk<T> {
20
+ seq: number;
21
+ chunk: T;
22
+ }
23
+ interface StreamSinkEvents<T> {
24
+ /** Fired for each `write()`. The RPC layer subscribes and broadcasts. */
25
+ chunk: (seq: number, chunk: T) => void;
26
+ /** Terminal — fired exactly once per sink lifetime. */
27
+ end: (error?: StreamErrorPayload) => void;
28
+ }
29
+ interface CreateStreamSinkOptions {
30
+ id?: string;
31
+ /**
32
+ * Size of the per-stream ring buffer kept for replay-on-resubscribe.
33
+ * `0` (default) disables replay.
34
+ */
35
+ replayWindow?: number;
36
+ }
37
+ /**
38
+ * Server-side producer handle. Two equivalent surfaces share one piece of
39
+ * state: the imperative `write/error/close` triple, and a `WritableStream<T>`
40
+ * for `pipeTo`-style consumption.
41
+ */
42
+ interface StreamSink<T> {
43
+ /** Stable id used by clients to subscribe. */
44
+ readonly id: string;
45
+ /**
46
+ * Aborts when the consumer cancels (server-side) or when the transport
47
+ * loses every subscriber. Producers should poll `signal.aborted` and exit
48
+ * cleanly.
49
+ */
50
+ readonly signal: AbortSignal;
51
+ /** `true` after `close()` / `error()`. Further writes throw. */
52
+ readonly closed: boolean;
53
+ /** Last allocated sequence number. `0` until the first write. */
54
+ readonly lastSeq: number;
55
+ write: (chunk: T) => void;
56
+ error: (reason: unknown) => void;
57
+ close: () => void;
58
+ /** External-cancel path. Aborts the signal so handlers can short-circuit. */
59
+ abort: (reason?: unknown) => void;
60
+ /** `WritableStream<T>` adapter — same in-memory state as the imperative API. */
61
+ readonly writable: WritableStream<T>;
62
+ /**
63
+ * Internal — RPC layer subscribes to receive chunk/end notifications.
64
+ * Not part of the public contract; do not call directly.
65
+ *
66
+ * @internal
67
+ */
68
+ readonly events: EventEmitter<StreamSinkEvents<T>>;
69
+ /**
70
+ * Internal — replay buffer. RPC layer reads on (re)subscribe to feed
71
+ * missed chunks before going live.
72
+ *
73
+ * @internal
74
+ */
75
+ readonly buffer: ReadonlyArray<BufferedChunk<T>>;
76
+ }
77
+ interface CreateStreamReaderOptions {
78
+ id?: string;
79
+ /**
80
+ * Maximum number of buffered chunks held client-side while the consumer
81
+ * isn't draining. On overflow, the oldest chunk is dropped.
82
+ */
83
+ highWaterMark?: number;
84
+ /**
85
+ * Called when the chunk queue overflows the high-water mark. The RPC
86
+ * layer wires this to a coded warning; the primitive itself is
87
+ * RPC-agnostic.
88
+ */
89
+ onOverflow?: (dropped: number) => void;
90
+ /** Called when the consumer cancels — the RPC layer sends `:cancel` upstream. */
91
+ onCancel?: () => void;
92
+ }
93
+ /**
94
+ * Client-side consumer handle. Both an `AsyncIterable<T>` (for `for await`)
95
+ * and exposes `readable: ReadableStream<T>` (for `pipeTo`). Pick one — they
96
+ * share a single internal queue, so concurrent draining will race.
97
+ */
98
+ interface StreamReader<T> extends AsyncIterable<T> {
99
+ readonly id: string;
100
+ readonly cancelled: boolean;
101
+ readonly done: boolean;
102
+ /** Highest `seq` observed. Used for replay on reconnect. */
103
+ readonly lastSeenSeq: number;
104
+ /** `ReadableStream<T>` adapter for `pipeTo`-style consumption. */
105
+ readonly readable: ReadableStream<T>;
106
+ cancel: () => void;
107
+ /** @internal */
108
+ _push: (seq: number, chunk: T) => void;
109
+ /** @internal */
110
+ _end: (error?: StreamErrorPayload) => void;
111
+ }
112
+ /**
113
+ * Build a server-side stream sink. RPC-agnostic — the RPC host wires
114
+ * `events.on('chunk' | 'end')` to broadcast, and reads `buffer` to replay
115
+ * for late or reconnecting subscribers.
116
+ */
117
+ declare function createStreamSink<T>(options?: CreateStreamSinkOptions): StreamSink<T>;
118
+ /**
119
+ * Build a client-side stream reader. RPC-agnostic — the RPC host calls
120
+ * `_push(seq, chunk)` on each incoming chunk and `_end(error?)` on the
121
+ * terminal frame. Consumers iterate with `for await` or pipe `readable`.
122
+ */
123
+ declare function createStreamReader<T>(options?: CreateStreamReaderOptions): StreamReader<T>;
124
+ declare type __ΩStreamErrorPayload = any[];
125
+ declare type __ΩBufferedChunk = any[];
126
+ declare type __ΩStreamSinkEvents = any[];
127
+ declare type __ΩCreateStreamSinkOptions = any[];
128
+ declare type __ΩStreamSink = any[];
129
+ declare type __ΩCreateStreamReaderOptions = any[];
130
+ declare type __ΩStreamReader = any[];
131
+ //#endregion
132
+ export { BufferedChunk, CreateStreamReaderOptions, CreateStreamSinkOptions, StreamErrorPayload, StreamReader, StreamSink, StreamSinkEvents, __ΩBufferedChunk, __ΩCreateStreamReaderOptions, __ΩCreateStreamSinkOptions, __ΩStreamErrorPayload, __ΩStreamReader, __ΩStreamSink, __ΩStreamSinkEvents, createStreamReader, createStreamSink };
133
+ //# sourceMappingURL=streaming-channel.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-channel.d.mts","names":[],"sources":["../../src/lib/streaming-channel.ts"],"mappings":";;;;;AA0BA;;UAAiB,kBAAA;EACf,IAAA;EACA,OAAA;AAAA;;;;;;;;UAUe,aAAA;EACf,GAAA;EACA,KAAA,EAAO,CAAA;AAAA;AAAA,UAGQ,gBAAA;EAIiB;EAFhC,KAAA,GAAQ,GAAA,UAAa,KAAA,EAAO,CAAA;EAA5B;EAEA,GAAA,GAAM,KAAA,GAAQ,kBAAA;AAAA;AAAA,UAGC,uBAAA;EACf,EAAA;EAJc;;;;EASd,YAAA;AAAA;;;;AAQF;;UAAiB,UAAA;EAQE;EAAA,SANR,EAAA;EAmByB;;;;;EAAA,SAbzB,MAAA,EAAQ,WAAA;EA6Bc;EAAA,SA3BtB,MAAA;EA2BqB;EAAA,SAzBrB,OAAA;EAET,KAAA,GAAQ,KAAA,EAAO,CAAA;EACf,KAAA,GAAQ,MAAA;EACR,KAAA;EARiB;EAUjB,KAAA,GAAQ,MAAA;EANC;EAAA,SASA,QAAA,EAAU,cAAA,CAAe,CAAA;EAPnB;;;;;;EAAA,SAeN,MAAA,EAAQ,YAAA,CAAa,gBAAA,CAAiB,CAAA;EARtC;;;;;;EAAA,SAgBA,MAAA,EAAQ,aAAA,CAAc,aAAA,CAAc,CAAA;AAAA;AAAA,UAG9B,yBAAA;EACf,EAAA;EAJ6C;;;AAG/C;EAME,aAAA;;;;;;EAMA,UAAA,IAAc,OAAA;EAEd;EAAA,QAAA;AAAA;AAQF;;;;;AAAA,UAAiB,YAAA,YAAwB,aAAA,CAAc,CAAA;EAAA,SAC5C,EAAA;EAAA,SACA,SAAA;EAAA,SACA,IAAA;EAH2C;EAAA,SAK3C,WAAA;EALmB;EAAA,SAOnB,QAAA,EAAU,cAAA,CAAe,CAAA;EAElC,MAAA;EARS;EAWT,KAAA,GAAQ,GAAA,UAAa,KAAA,EAAO,CAAA;EATnB;EAWT,IAAA,GAAO,KAAA,GAAQ,kBAAA;AAAA;;;;;;iBAcD,gBAAA,GAAA,CACd,OAAA,GAAS,uBAAA,GACR,UAAA,CAAW,CAAA;;;;;;iBA+EE,kBAAA,GAAA,CACd,OAAA,GAAS,yBAAA,GACR,YAAA,CAAa,CAAA;AAAA"}
@@ -0,0 +1,258 @@
1
+ import { createEventEmitter } from "./events.mjs";
2
+ import { nanoid } from "@stryke/unique-id/nanoid-client";
3
+
4
+ //#region src/lib/streaming-channel.ts
5
+ const DEFAULT_HIGH_WATER_MARK = 256;
6
+ var StreamClosedError = class extends Error {
7
+ name = "StreamClosedError";
8
+ };
9
+ /**
10
+ * Build a server-side stream sink. RPC-agnostic — the RPC host wires
11
+ * `events.on('chunk' | 'end')` to broadcast, and reads `buffer` to replay
12
+ * for late or reconnecting subscribers.
13
+ */
14
+ function createStreamSink(options = {}) {
15
+ const id = options.id ?? nanoid();
16
+ const replayWindow = Math.max(0, options.replayWindow ?? 0);
17
+ const events = createEventEmitter();
18
+ const controller = new AbortController();
19
+ const buffer = [];
20
+ let closed = false;
21
+ let lastSeq = 0;
22
+ function write(chunk) {
23
+ if (closed) throw new StreamClosedError(`Cannot write to a closed stream "${id}"`);
24
+ lastSeq += 1;
25
+ if (replayWindow > 0) {
26
+ buffer.push({
27
+ seq: lastSeq,
28
+ chunk
29
+ });
30
+ if (buffer.length > replayWindow) buffer.splice(0, buffer.length - replayWindow);
31
+ }
32
+ events.emit("chunk", lastSeq, chunk);
33
+ }
34
+ function error(reason) {
35
+ if (closed) return;
36
+ closed = true;
37
+ const payload = toErrorPayload(reason);
38
+ controller.abort(reason);
39
+ events.emit("end", payload);
40
+ }
41
+ function close() {
42
+ if (closed) return;
43
+ closed = true;
44
+ if (!controller.signal.aborted) controller.abort("stream closed");
45
+ events.emit("end", void 0);
46
+ }
47
+ function abort(reason) {
48
+ if (closed) return;
49
+ if (!controller.signal.aborted) controller.abort(reason ?? "aborted");
50
+ }
51
+ const writable = new WritableStream({
52
+ write(chunk) {
53
+ write(chunk);
54
+ },
55
+ close() {
56
+ close();
57
+ },
58
+ abort(reason) {
59
+ error(reason);
60
+ }
61
+ });
62
+ return {
63
+ id,
64
+ signal: controller.signal,
65
+ get closed() {
66
+ return closed;
67
+ },
68
+ get lastSeq() {
69
+ return lastSeq;
70
+ },
71
+ write,
72
+ error,
73
+ close,
74
+ abort,
75
+ writable,
76
+ events,
77
+ buffer
78
+ };
79
+ }
80
+ /**
81
+ * Build a client-side stream reader. RPC-agnostic — the RPC host calls
82
+ * `_push(seq, chunk)` on each incoming chunk and `_end(error?)` on the
83
+ * terminal frame. Consumers iterate with `for await` or pipe `readable`.
84
+ */
85
+ function createStreamReader(options = {}) {
86
+ const id = options.id ?? nanoid();
87
+ const highWaterMark = Math.max(1, options.highWaterMark ?? DEFAULT_HIGH_WATER_MARK);
88
+ const queue = [];
89
+ let lastSeenSeq = 0;
90
+ let done = false;
91
+ let cancelled = false;
92
+ let endError;
93
+ let pending;
94
+ let pullController;
95
+ let readableInstance;
96
+ function drainNext() {
97
+ if (!pending) return;
98
+ if (queue.length > 0) {
99
+ const value = queue.shift();
100
+ const r = pending;
101
+ pending = void 0;
102
+ r.resolve({
103
+ value,
104
+ done: false
105
+ });
106
+ return;
107
+ }
108
+ if (done) {
109
+ const r = pending;
110
+ pending = void 0;
111
+ if (endError) {
112
+ const err = new Error(endError.message);
113
+ err.name = endError.name;
114
+ r.reject(err);
115
+ } else r.resolve({
116
+ value: void 0,
117
+ done: true
118
+ });
119
+ }
120
+ }
121
+ function feedReadable() {
122
+ if (!pullController) return;
123
+ while (queue.length > 0) {
124
+ const v = queue.shift();
125
+ try {
126
+ pullController.enqueue(v);
127
+ } catch {
128
+ break;
129
+ }
130
+ }
131
+ if (done && pullController) {
132
+ try {
133
+ if (endError) {
134
+ const err = new Error(endError.message);
135
+ err.name = endError.name;
136
+ pullController.error(err);
137
+ } else pullController.close();
138
+ } catch {}
139
+ pullController = void 0;
140
+ }
141
+ }
142
+ function push(seq, chunk) {
143
+ if (done || cancelled) return;
144
+ if (seq <= lastSeenSeq) return;
145
+ lastSeenSeq = seq;
146
+ queue.push(chunk);
147
+ if (queue.length > highWaterMark) {
148
+ const overflow = queue.length - highWaterMark;
149
+ queue.splice(0, overflow);
150
+ options.onOverflow?.(overflow);
151
+ }
152
+ drainNext();
153
+ if (readableInstance) feedReadable();
154
+ }
155
+ function end(error) {
156
+ if (done) return;
157
+ done = true;
158
+ endError = error;
159
+ drainNext();
160
+ if (readableInstance) feedReadable();
161
+ }
162
+ function cancel() {
163
+ if (cancelled || done) return;
164
+ cancelled = true;
165
+ options.onCancel?.();
166
+ end(void 0);
167
+ }
168
+ function getReadable() {
169
+ if (readableInstance) return readableInstance;
170
+ readableInstance = new ReadableStream({
171
+ start(controller) {
172
+ pullController = controller;
173
+ feedReadable();
174
+ },
175
+ cancel() {
176
+ cancel();
177
+ }
178
+ });
179
+ return readableInstance;
180
+ }
181
+ return {
182
+ id,
183
+ get cancelled() {
184
+ return cancelled;
185
+ },
186
+ get done() {
187
+ return done;
188
+ },
189
+ get lastSeenSeq() {
190
+ return lastSeenSeq;
191
+ },
192
+ get readable() {
193
+ return getReadable();
194
+ },
195
+ cancel,
196
+ _push: push,
197
+ _end: end,
198
+ [Symbol.asyncIterator]() {
199
+ return {
200
+ async next() {
201
+ if (queue.length > 0) return Promise.resolve({
202
+ value: queue.shift(),
203
+ done: false
204
+ });
205
+ if (done) {
206
+ if (endError) {
207
+ const err = new Error(endError.message);
208
+ err.name = endError.name;
209
+ return Promise.reject(err);
210
+ }
211
+ return Promise.resolve({
212
+ value: void 0,
213
+ done: true
214
+ });
215
+ }
216
+ return new Promise((resolve, reject) => {
217
+ pending = {
218
+ resolve,
219
+ reject
220
+ };
221
+ });
222
+ },
223
+ async return() {
224
+ cancel();
225
+ return Promise.resolve({
226
+ value: void 0,
227
+ done: true
228
+ });
229
+ }
230
+ };
231
+ }
232
+ };
233
+ }
234
+ function toErrorPayload(reason) {
235
+ if (reason instanceof Error) return {
236
+ name: reason.name || "Error",
237
+ message: reason.message
238
+ };
239
+ if (typeof reason === "string") return {
240
+ name: "Error",
241
+ message: reason
242
+ };
243
+ try {
244
+ return {
245
+ name: "Error",
246
+ message: JSON.stringify(reason)
247
+ };
248
+ } catch {
249
+ return {
250
+ name: "Error",
251
+ message: String(reason)
252
+ };
253
+ }
254
+ }
255
+
256
+ //#endregion
257
+ export { createStreamReader, createStreamSink };
258
+ //# sourceMappingURL=streaming-channel.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streaming-channel.mjs","names":[],"sources":["../../src/lib/streaming-channel.ts"],"sourcesContent":["/* -------------------------------------------------------------------\n\n ⚡ Storm Software - Powerlines\n\n This code was released as part of the Powerlines project. Powerlines\n is maintained by Storm Software under the Apache-2.0 license, and is\n free for commercial and private use. For more information, please visit\n our licensing page at https://stormsoftware.com/licenses/projects/powerlines.\n\n Website: https://stormsoftware.com\n Repository: https://github.com/storm-software/powerlines\n Documentation: https://docs.stormsoftware.com/projects/powerlines\n Contact: https://stormsoftware.com/contact\n\n SPDX-License-Identifier: Apache-2.0\n\n ------------------------------------------------------------------- */\n\nimport { nanoid } from \"@stryke/unique-id/nanoid-client\";\nimport type { EventEmitter } from \"devframe/types\";\nimport { createEventEmitter } from \"./events\";\n\n/**\n * Serialized error shape sent over the wire when a stream ends with a failure.\n * Stays JSON-safe so the strict-JSON encoder can carry it without coercion.\n */\nexport interface StreamErrorPayload {\n name: string;\n message: string;\n}\n\n/**\n * Single buffered chunk in the server-side ring buffer.\n *\n * Sequence numbers start at 1 and increment per write. Subscribers track\n * `lastSeenSeq` and ask for `afterSeq` on resubscribe so the server can\n * replay any chunks the client missed during a brief disconnect.\n */\nexport interface BufferedChunk<T> {\n seq: number;\n chunk: T;\n}\n\nexport interface StreamSinkEvents<T> {\n /** Fired for each `write()`. The RPC layer subscribes and broadcasts. */\n chunk: (seq: number, chunk: T) => void;\n /** Terminal — fired exactly once per sink lifetime. */\n end: (error?: StreamErrorPayload) => void;\n}\n\nexport interface CreateStreamSinkOptions {\n id?: string;\n /**\n * Size of the per-stream ring buffer kept for replay-on-resubscribe.\n * `0` (default) disables replay.\n */\n replayWindow?: number;\n}\n\n/**\n * Server-side producer handle. Two equivalent surfaces share one piece of\n * state: the imperative `write/error/close` triple, and a `WritableStream<T>`\n * for `pipeTo`-style consumption.\n */\nexport interface StreamSink<T> {\n /** Stable id used by clients to subscribe. */\n readonly id: string;\n /**\n * Aborts when the consumer cancels (server-side) or when the transport\n * loses every subscriber. Producers should poll `signal.aborted` and exit\n * cleanly.\n */\n readonly signal: AbortSignal;\n /** `true` after `close()` / `error()`. Further writes throw. */\n readonly closed: boolean;\n /** Last allocated sequence number. `0` until the first write. */\n readonly lastSeq: number;\n\n write: (chunk: T) => void;\n error: (reason: unknown) => void;\n close: () => void;\n /** External-cancel path. Aborts the signal so handlers can short-circuit. */\n abort: (reason?: unknown) => void;\n\n /** `WritableStream<T>` adapter — same in-memory state as the imperative API. */\n readonly writable: WritableStream<T>;\n\n /**\n * Internal — RPC layer subscribes to receive chunk/end notifications.\n * Not part of the public contract; do not call directly.\n *\n * @internal\n */\n readonly events: EventEmitter<StreamSinkEvents<T>>;\n\n /**\n * Internal — replay buffer. RPC layer reads on (re)subscribe to feed\n * missed chunks before going live.\n *\n * @internal\n */\n readonly buffer: ReadonlyArray<BufferedChunk<T>>;\n}\n\nexport interface CreateStreamReaderOptions {\n id?: string;\n /**\n * Maximum number of buffered chunks held client-side while the consumer\n * isn't draining. On overflow, the oldest chunk is dropped.\n */\n highWaterMark?: number;\n /**\n * Called when the chunk queue overflows the high-water mark. The RPC\n * layer wires this to a coded warning; the primitive itself is\n * RPC-agnostic.\n */\n onOverflow?: (dropped: number) => void;\n /** Called when the consumer cancels — the RPC layer sends `:cancel` upstream. */\n onCancel?: () => void;\n}\n\n/**\n * Client-side consumer handle. Both an `AsyncIterable<T>` (for `for await`)\n * and exposes `readable: ReadableStream<T>` (for `pipeTo`). Pick one — they\n * share a single internal queue, so concurrent draining will race.\n */\nexport interface StreamReader<T> extends AsyncIterable<T> {\n readonly id: string;\n readonly cancelled: boolean;\n readonly done: boolean;\n /** Highest `seq` observed. Used for replay on reconnect. */\n readonly lastSeenSeq: number;\n /** `ReadableStream<T>` adapter for `pipeTo`-style consumption. */\n readonly readable: ReadableStream<T>;\n\n cancel: () => void;\n\n /** @internal */\n _push: (seq: number, chunk: T) => void;\n /** @internal */\n _end: (error?: StreamErrorPayload) => void;\n}\n\nconst DEFAULT_HIGH_WATER_MARK = 256;\n\nclass StreamClosedError extends Error {\n override name = \"StreamClosedError\";\n}\n\n/**\n * Build a server-side stream sink. RPC-agnostic — the RPC host wires\n * `events.on('chunk' | 'end')` to broadcast, and reads `buffer` to replay\n * for late or reconnecting subscribers.\n */\nexport function createStreamSink<T>(\n options: CreateStreamSinkOptions = {}\n): StreamSink<T> {\n const id = options.id ?? nanoid();\n const replayWindow = Math.max(0, options.replayWindow ?? 0);\n const events = createEventEmitter<StreamSinkEvents<T>>();\n const controller = new AbortController();\n const buffer: BufferedChunk<T>[] = [];\n\n let closed = false;\n let lastSeq = 0;\n\n function write(chunk: T): void {\n if (closed) {\n throw new StreamClosedError(`Cannot write to a closed stream \"${id}\"`);\n }\n lastSeq += 1;\n if (replayWindow > 0) {\n buffer.push({ seq: lastSeq, chunk });\n if (buffer.length > replayWindow)\n buffer.splice(0, buffer.length - replayWindow);\n }\n events.emit(\"chunk\", lastSeq, chunk);\n }\n\n function error(reason: unknown): void {\n if (closed) return;\n closed = true;\n const payload = toErrorPayload(reason);\n controller.abort(reason);\n events.emit(\"end\", payload);\n }\n\n function close(): void {\n if (closed) return;\n closed = true;\n if (!controller.signal.aborted) controller.abort(\"stream closed\");\n events.emit(\"end\", undefined);\n }\n\n function abort(reason?: unknown): void {\n if (closed) return;\n if (!controller.signal.aborted) controller.abort(reason ?? \"aborted\");\n }\n\n const writable = new WritableStream<T>({\n write(chunk) {\n write(chunk);\n },\n close() {\n close();\n },\n abort(reason) {\n error(reason);\n }\n });\n\n return {\n id,\n signal: controller.signal,\n get closed() {\n return closed;\n },\n get lastSeq() {\n return lastSeq;\n },\n write,\n error,\n close,\n abort,\n writable,\n events,\n buffer\n };\n}\n\n/**\n * Build a client-side stream reader. RPC-agnostic — the RPC host calls\n * `_push(seq, chunk)` on each incoming chunk and `_end(error?)` on the\n * terminal frame. Consumers iterate with `for await` or pipe `readable`.\n */\nexport function createStreamReader<T>(\n options: CreateStreamReaderOptions = {}\n): StreamReader<T> {\n const id = options.id ?? nanoid();\n const highWaterMark = Math.max(\n 1,\n options.highWaterMark ?? DEFAULT_HIGH_WATER_MARK\n );\n\n const queue: T[] = [];\n let lastSeenSeq = 0;\n let done = false;\n let cancelled = false;\n let endError: StreamErrorPayload | undefined;\n let pending:\n | {\n resolve: (r: IteratorResult<T>) => void;\n reject: (err: unknown) => void;\n }\n | undefined;\n // Lazily created — accessing `reader.readable` claims the queue for\n // `pipeTo` consumption. While inactive, `_push` only feeds the\n // AsyncIterator path. Mixing the two surfaces is undefined behavior.\n let pullController: ReadableStreamDefaultController<T> | undefined;\n let readableInstance: ReadableStream<T> | undefined;\n\n function drainNext(): void {\n if (!pending) return;\n if (queue.length > 0) {\n const value = queue.shift()!;\n const r = pending;\n pending = undefined;\n r.resolve({ value, done: false });\n return;\n }\n if (done) {\n const r = pending;\n pending = undefined;\n if (endError) {\n const err = new Error(endError.message);\n err.name = endError.name;\n r.reject(err);\n } else {\n r.resolve({ value: undefined, done: true });\n }\n }\n }\n\n function feedReadable(): void {\n if (!pullController) return;\n while (queue.length > 0) {\n const v = queue.shift()!;\n try {\n pullController.enqueue(v);\n } catch {\n // controller closed/errored under us — drop silently; the\n // ReadableStream consumer is gone and we can't push further.\n break;\n }\n }\n if (done && pullController) {\n try {\n if (endError) {\n const err = new Error(endError.message);\n err.name = endError.name;\n pullController.error(err);\n } else {\n pullController.close();\n }\n } catch {\n // already closed\n }\n pullController = undefined;\n }\n }\n\n function push(seq: number, chunk: T): void {\n if (done || cancelled) return;\n if (seq <= lastSeenSeq) return; // dedupe replays we've already seen\n lastSeenSeq = seq;\n queue.push(chunk);\n if (queue.length > highWaterMark) {\n const overflow = queue.length - highWaterMark;\n queue.splice(0, overflow);\n options.onOverflow?.(overflow);\n }\n drainNext();\n if (readableInstance) feedReadable();\n }\n\n function end(error?: StreamErrorPayload): void {\n if (done) return;\n done = true;\n endError = error;\n drainNext();\n if (readableInstance) feedReadable();\n }\n\n function cancel(): void {\n if (cancelled || done) return;\n cancelled = true;\n options.onCancel?.();\n end(undefined);\n }\n\n function getReadable(): ReadableStream<T> {\n if (readableInstance) return readableInstance;\n readableInstance = new ReadableStream<T>({\n start(controller) {\n pullController = controller;\n feedReadable();\n },\n cancel() {\n cancel();\n }\n });\n return readableInstance;\n }\n\n const reader: StreamReader<T> = {\n id,\n get cancelled() {\n return cancelled;\n },\n get done() {\n return done;\n },\n get lastSeenSeq() {\n return lastSeenSeq;\n },\n get readable() {\n return getReadable();\n },\n cancel,\n _push: push,\n _end: end,\n [Symbol.asyncIterator](): AsyncIterator<T> {\n return {\n async next(): Promise<IteratorResult<T>> {\n if (queue.length > 0) {\n return Promise.resolve({ value: queue.shift()!, done: false });\n }\n if (done) {\n if (endError) {\n const err = new Error(endError.message);\n err.name = endError.name;\n return Promise.reject(err);\n }\n return Promise.resolve({\n value: undefined as unknown as T,\n done: true\n });\n }\n return new Promise<IteratorResult<T>>((resolve, reject) => {\n pending = { resolve, reject };\n });\n },\n async return(): Promise<IteratorResult<T>> {\n cancel();\n return Promise.resolve({\n value: undefined as unknown as T,\n done: true\n });\n }\n };\n }\n };\n\n return reader;\n}\n\nfunction toErrorPayload(reason: unknown): StreamErrorPayload {\n if (reason instanceof Error) {\n return { name: reason.name || \"Error\", message: reason.message };\n }\n if (typeof reason === \"string\") {\n return { name: \"Error\", message: reason };\n }\n try {\n return { name: \"Error\", message: JSON.stringify(reason) };\n } catch {\n return { name: \"Error\", message: String(reason) };\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_lib_typescript_ts_morph = require('./ts-morph.cjs');
3
+ const require_lib_typescript_tsconfig = require('./tsconfig.cjs');
4
+
5
+ exports.VirtualFileSystemHost = require_lib_typescript_ts_morph.VirtualFileSystemHost;
6
+ exports.createProgram = require_lib_typescript_ts_morph.createProgram;
7
+ exports.findIncludeMatch = require_lib_typescript_tsconfig.findIncludeMatch;
8
+ exports.findMatch = require_lib_typescript_tsconfig.findMatch;
9
+ exports.getParsedTypeScriptConfig = require_lib_typescript_tsconfig.getParsedTypeScriptConfig;
10
+ exports.getTsconfigDtsPath = require_lib_typescript_tsconfig.getTsconfigDtsPath;
11
+ exports.getTsconfigFilePath = require_lib_typescript_tsconfig.getTsconfigFilePath;
12
+ exports.initializeTsconfig = require_lib_typescript_tsconfig.initializeTsconfig;
13
+ exports.isIncludeMatchFound = require_lib_typescript_tsconfig.isIncludeMatchFound;
14
+ exports.isMatchFound = require_lib_typescript_tsconfig.isMatchFound;
15
+ exports.resolveTsconfig = require_lib_typescript_tsconfig.resolveTsconfig;
16
+ exports.tryTsconfigFilePath = require_lib_typescript_tsconfig.tryTsconfigFilePath;
@@ -0,0 +1,3 @@
1
+ import { VirtualFileSystemHost, createProgram } from "./ts-morph.cjs";
2
+ import { findIncludeMatch, findMatch, getParsedTypeScriptConfig, getTsconfigDtsPath, getTsconfigFilePath, initializeTsconfig, isIncludeMatchFound, isMatchFound, resolveTsconfig, tryTsconfigFilePath } from "./tsconfig.cjs";
3
+ export { VirtualFileSystemHost, createProgram, findIncludeMatch, findMatch, getParsedTypeScriptConfig, getTsconfigDtsPath, getTsconfigFilePath, initializeTsconfig, isIncludeMatchFound, isMatchFound, resolveTsconfig, tryTsconfigFilePath };
@@ -0,0 +1,3 @@
1
+ import { VirtualFileSystemHost, createProgram } from "./ts-morph.mjs";
2
+ import { findIncludeMatch, findMatch, getParsedTypeScriptConfig, getTsconfigDtsPath, getTsconfigFilePath, initializeTsconfig, isIncludeMatchFound, isMatchFound, resolveTsconfig, tryTsconfigFilePath } from "./tsconfig.mjs";
3
+ export { VirtualFileSystemHost, createProgram, findIncludeMatch, findMatch, getParsedTypeScriptConfig, getTsconfigDtsPath, getTsconfigFilePath, initializeTsconfig, isIncludeMatchFound, isMatchFound, resolveTsconfig, tryTsconfigFilePath };
@@ -0,0 +1,4 @@
1
+ import { VirtualFileSystemHost, createProgram } from "./ts-morph.mjs";
2
+ import { findIncludeMatch, findMatch, getParsedTypeScriptConfig, getTsconfigDtsPath, getTsconfigFilePath, initializeTsconfig, isIncludeMatchFound, isMatchFound, resolveTsconfig, tryTsconfigFilePath } from "./tsconfig.mjs";
3
+
4
+ export { VirtualFileSystemHost, createProgram, findIncludeMatch, findMatch, getParsedTypeScriptConfig, getTsconfigDtsPath, getTsconfigFilePath, initializeTsconfig, isIncludeMatchFound, isMatchFound, resolveTsconfig, tryTsconfigFilePath };
@@ -0,0 +1,105 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_runtime = require('../../_virtual/_rolldown/runtime.cjs');
3
+ let defu = require("defu");
4
+ defu = require_runtime.__toESM(defu, 1);
5
+ let ts_morph = require("ts-morph");
6
+
7
+ //#region src/lib/typescript/ts-morph.ts
8
+ var VirtualFileSystemHost = class extends ts_morph.InMemoryFileSystemHost {
9
+ #context;
10
+ constructor(context) {
11
+ super();
12
+ this.#context = context;
13
+ }
14
+ deleteSync(path) {
15
+ this.#context.fs.removeSync(path);
16
+ }
17
+ readDirSync(dirPath) {
18
+ if (!this.#context.fs.isDirectorySync(dirPath)) return [];
19
+ return this.#context.fs.listSync(dirPath).reduce((ret, entry) => {
20
+ const fullPath = this.#context.fs.resolveSync(entry);
21
+ if (fullPath) ret.push({
22
+ name: entry,
23
+ isDirectory: this.#context.fs.isDirectorySync(fullPath),
24
+ isFile: this.#context.fs.isFileSync(fullPath),
25
+ isSymlink: false
26
+ });
27
+ return ret;
28
+ }, []);
29
+ }
30
+ async readFile(filePath) {
31
+ if (!this.#context.fs.isFileSync(filePath)) return "";
32
+ return await this.#context.fs.read(filePath);
33
+ }
34
+ readFileSync(filePath) {
35
+ if (!this.#context.fs.isFileSync(filePath)) return "";
36
+ return this.#context.fs.readSync(filePath);
37
+ }
38
+ async writeFile(filePath, fileText) {
39
+ return this.#context.fs.write(filePath, fileText);
40
+ }
41
+ writeFileSync(filePath, fileText) {
42
+ this.#context.fs.writeSync(filePath, fileText);
43
+ }
44
+ async mkdir(dirPath) {
45
+ await this.#context.fs.mkdir(dirPath);
46
+ }
47
+ mkdirSync(dirPath) {
48
+ this.#context.fs.mkdirSync(dirPath);
49
+ }
50
+ async move(srcPath, destPath) {
51
+ await this.#context.fs.move(srcPath, destPath);
52
+ }
53
+ moveSync(srcPath, destPath) {
54
+ this.#context.fs.moveSync(srcPath, destPath);
55
+ }
56
+ async copy(srcPath, destPath) {
57
+ await this.#context.fs.copy(srcPath, destPath);
58
+ }
59
+ copySync(srcPath, destPath) {
60
+ this.#context.fs.copySync(srcPath, destPath);
61
+ }
62
+ async fileExists(filePath) {
63
+ return this.#context.fs.isFile(filePath);
64
+ }
65
+ fileExistsSync(filePath) {
66
+ return this.#context.fs.isFileSync(filePath);
67
+ }
68
+ async directoryExists(dirPath) {
69
+ return this.#context.fs.isDirectory(dirPath);
70
+ }
71
+ directoryExistsSync(dirPath) {
72
+ return this.#context.fs.isDirectorySync(dirPath);
73
+ }
74
+ realpathSync(path) {
75
+ return this.#context.fs.resolveSync(path) || path;
76
+ }
77
+ getCurrentDirectory() {
78
+ return this.#context.config.cwd;
79
+ }
80
+ async glob(patterns) {
81
+ return this.#context.fs.glob(patterns);
82
+ }
83
+ globSync(patterns) {
84
+ return this.#context.fs.globSync(patterns);
85
+ }
86
+ };
87
+ /**
88
+ * Create a ts-morph {@link Project} instance used for type reflection and module manipulation during processing
89
+ *
90
+ * @param context - The Powerlines context
91
+ * @returns A ts-morph {@link Project} instance
92
+ */
93
+ function createProgram(context, override) {
94
+ context.debug(`Creating ts-morph Project instance with configuration from: ${context.tsconfig.tsconfigFilePath}.`);
95
+ return new ts_morph.Project((0, defu.default)(override ?? {}, {
96
+ skipAddingFilesFromTsConfig: false,
97
+ tsConfigFilePath: context.tsconfig.tsconfigFilePath,
98
+ fileSystem: new VirtualFileSystemHost(context),
99
+ compilerOptions: (0, defu.default)(context.tsconfig.options ?? {}, { lib: ["lib.esnext.full.d.ts"] })
100
+ }));
101
+ }
102
+
103
+ //#endregion
104
+ exports.VirtualFileSystemHost = VirtualFileSystemHost;
105
+ exports.createProgram = createProgram;
@@ -0,0 +1,38 @@
1
+ import { Context } from "../../types/context.cjs";
2
+ import { FileSystemHost, InMemoryFileSystemHost, Project, ProjectOptions, RuntimeDirEntry } from "ts-morph";
3
+
4
+ //#region src/lib/typescript/ts-morph.d.ts
5
+ declare class VirtualFileSystemHost extends InMemoryFileSystemHost implements FileSystemHost {
6
+ #private;
7
+ constructor(context: Context);
8
+ deleteSync(path: string): void;
9
+ readDirSync(dirPath: string): RuntimeDirEntry[];
10
+ readFile(filePath: string): Promise<string>;
11
+ readFileSync(filePath: string): string;
12
+ writeFile(filePath: string, fileText: string): Promise<void>;
13
+ writeFileSync(filePath: string, fileText: string): void;
14
+ mkdir(dirPath: string): Promise<void>;
15
+ mkdirSync(dirPath: string): void;
16
+ move(srcPath: string, destPath: string): Promise<void>;
17
+ moveSync(srcPath: string, destPath: string): void;
18
+ copy(srcPath: string, destPath: string): Promise<void>;
19
+ copySync(srcPath: string, destPath: string): void;
20
+ fileExists(filePath: string): Promise<boolean>;
21
+ fileExistsSync(filePath: string): boolean;
22
+ directoryExists(dirPath: string): Promise<boolean>;
23
+ directoryExistsSync(dirPath: string): boolean;
24
+ realpathSync(path: string): string;
25
+ getCurrentDirectory(): string;
26
+ glob(patterns: ReadonlyArray<string>): Promise<string[]>;
27
+ globSync(patterns: ReadonlyArray<string>): string[];
28
+ }
29
+ /**
30
+ * Create a ts-morph {@link Project} instance used for type reflection and module manipulation during processing
31
+ *
32
+ * @param context - The Powerlines context
33
+ * @returns A ts-morph {@link Project} instance
34
+ */
35
+ declare function createProgram(context: Context, override: Partial<ProjectOptions>): Project;
36
+ //#endregion
37
+ export { VirtualFileSystemHost, createProgram };
38
+ //# sourceMappingURL=ts-morph.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-morph.d.cts","names":[],"sources":["../../../src/lib/typescript/ts-morph.ts"],"mappings":";;;;cA6Ba,qBAAA,SACH,sBAAA,YACG,cAAA;EAAA;cAIQ,OAAA,EAAS,OAAA;EAMZ,UAAA,CAAW,IAAA;EAIX,WAAA,CAAY,OAAA,WAAkB,eAAA;EAoBxB,QAAA,CAAS,QAAA,WAAgB,OAAA;EAQ/B,YAAA,CAAa,QAAA;EAQP,SAAA,CAAU,QAAA,UAAkB,QAAA,WAAgB,OAAA;EAIlD,aAAA,CAAc,QAAA,UAAkB,QAAA;EAI1B,KAAA,CAAM,OAAA,WAAe,OAAA;EAI3B,SAAA,CAAU,OAAA;EAIJ,IAAA,CAAK,OAAA,UAAiB,QAAA,WAAgB,OAAA;EAI5C,QAAA,CAAS,OAAA,UAAiB,QAAA;EAIpB,IAAA,CAAK,OAAA,UAAiB,QAAA,WAAgB,OAAA;EAI5C,QAAA,CAAS,OAAA,UAAiB,QAAA;EAIpB,UAAA,CAAW,QAAA,WAAgB,OAAA;EAIjC,cAAA,CAAe,QAAA;EAIT,eAAA,CAAgB,OAAA,WAAe,OAAA;EAIrC,mBAAA,CAAoB,OAAA;EAIpB,YAAA,CAAa,IAAA;EAIb,mBAAA,CAAA;EAIM,IAAA,CACpB,QAAA,EAAU,aAAA,WACT,OAAA;EAIa,QAAA,CAAS,QAAA,EAAU,aAAA;AAAA;;;;;;;iBAWrB,aAAA,CACd,OAAA,EAAS,OAAA,EACT,QAAA,EAAU,OAAA,CAAQ,cAAA,IACjB,OAAA"}
@@ -0,0 +1,38 @@
1
+ import { Context } from "../../types/context.mjs";
2
+ import { FileSystemHost, InMemoryFileSystemHost, Project, ProjectOptions, RuntimeDirEntry } from "ts-morph";
3
+
4
+ //#region src/lib/typescript/ts-morph.d.ts
5
+ declare class VirtualFileSystemHost extends InMemoryFileSystemHost implements FileSystemHost {
6
+ #private;
7
+ constructor(context: Context);
8
+ deleteSync(path: string): void;
9
+ readDirSync(dirPath: string): RuntimeDirEntry[];
10
+ readFile(filePath: string): Promise<string>;
11
+ readFileSync(filePath: string): string;
12
+ writeFile(filePath: string, fileText: string): Promise<void>;
13
+ writeFileSync(filePath: string, fileText: string): void;
14
+ mkdir(dirPath: string): Promise<void>;
15
+ mkdirSync(dirPath: string): void;
16
+ move(srcPath: string, destPath: string): Promise<void>;
17
+ moveSync(srcPath: string, destPath: string): void;
18
+ copy(srcPath: string, destPath: string): Promise<void>;
19
+ copySync(srcPath: string, destPath: string): void;
20
+ fileExists(filePath: string): Promise<boolean>;
21
+ fileExistsSync(filePath: string): boolean;
22
+ directoryExists(dirPath: string): Promise<boolean>;
23
+ directoryExistsSync(dirPath: string): boolean;
24
+ realpathSync(path: string): string;
25
+ getCurrentDirectory(): string;
26
+ glob(patterns: ReadonlyArray<string>): Promise<string[]>;
27
+ globSync(patterns: ReadonlyArray<string>): string[];
28
+ }
29
+ /**
30
+ * Create a ts-morph {@link Project} instance used for type reflection and module manipulation during processing
31
+ *
32
+ * @param context - The Powerlines context
33
+ * @returns A ts-morph {@link Project} instance
34
+ */
35
+ declare function createProgram(context: Context, override: Partial<ProjectOptions>): Project;
36
+ //#endregion
37
+ export { VirtualFileSystemHost, createProgram };
38
+ //# sourceMappingURL=ts-morph.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ts-morph.d.mts","names":[],"sources":["../../../src/lib/typescript/ts-morph.ts"],"mappings":";;;;cA6Ba,qBAAA,SACH,sBAAA,YACG,cAAA;EAAA;cAIQ,OAAA,EAAS,OAAA;EAMZ,UAAA,CAAW,IAAA;EAIX,WAAA,CAAY,OAAA,WAAkB,eAAA;EAoBxB,QAAA,CAAS,QAAA,WAAgB,OAAA;EAQ/B,YAAA,CAAa,QAAA;EAQP,SAAA,CAAU,QAAA,UAAkB,QAAA,WAAgB,OAAA;EAIlD,aAAA,CAAc,QAAA,UAAkB,QAAA;EAI1B,KAAA,CAAM,OAAA,WAAe,OAAA;EAI3B,SAAA,CAAU,OAAA;EAIJ,IAAA,CAAK,OAAA,UAAiB,QAAA,WAAgB,OAAA;EAI5C,QAAA,CAAS,OAAA,UAAiB,QAAA;EAIpB,IAAA,CAAK,OAAA,UAAiB,QAAA,WAAgB,OAAA;EAI5C,QAAA,CAAS,OAAA,UAAiB,QAAA;EAIpB,UAAA,CAAW,QAAA,WAAgB,OAAA;EAIjC,cAAA,CAAe,QAAA;EAIT,eAAA,CAAgB,OAAA,WAAe,OAAA;EAIrC,mBAAA,CAAoB,OAAA;EAIpB,YAAA,CAAa,IAAA;EAIb,mBAAA,CAAA;EAIM,IAAA,CACpB,QAAA,EAAU,aAAA,WACT,OAAA;EAIa,QAAA,CAAS,QAAA,EAAU,aAAA;AAAA;;;;;;;iBAWrB,aAAA,CACd,OAAA,EAAS,OAAA,EACT,QAAA,EAAU,OAAA,CAAQ,cAAA,IACjB,OAAA"}