@start9labs/start-sdk 0.4.0-beta.4 → 0.4.0-beta.40

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 (324) hide show
  1. package/base/lib/Effects.d.ts +6 -34
  2. package/base/lib/actions/index.d.ts +13 -14
  3. package/base/lib/actions/index.js +4 -4
  4. package/base/lib/actions/index.js.map +1 -1
  5. package/base/lib/actions/input/builder/inputSpec.d.ts +16 -26
  6. package/base/lib/actions/input/builder/inputSpec.js +9 -24
  7. package/base/lib/actions/input/builder/inputSpec.js.map +1 -1
  8. package/base/lib/actions/input/builder/list.d.ts +13 -24
  9. package/base/lib/actions/input/builder/list.js +19 -30
  10. package/base/lib/actions/input/builder/list.js.map +1 -1
  11. package/base/lib/actions/input/builder/value.d.ts +394 -64
  12. package/base/lib/actions/input/builder/value.js +542 -213
  13. package/base/lib/actions/input/builder/value.js.map +1 -1
  14. package/base/lib/actions/input/builder/variants.d.ts +27 -24
  15. package/base/lib/actions/input/builder/variants.js +25 -24
  16. package/base/lib/actions/input/builder/variants.js.map +1 -1
  17. package/base/lib/actions/input/inputSpecConstants.d.ts +25 -17
  18. package/base/lib/actions/input/inputSpecConstants.js +16 -12
  19. package/base/lib/actions/input/inputSpecConstants.js.map +1 -1
  20. package/base/lib/actions/input/inputSpecTypes.d.ts +0 -3
  21. package/base/lib/actions/input/inputSpecTypes.js.map +1 -1
  22. package/base/lib/actions/setupActions.d.ts +21 -15
  23. package/base/lib/actions/setupActions.js +42 -7
  24. package/base/lib/actions/setupActions.js.map +1 -1
  25. package/base/lib/dependencies/dependencies.d.ts +7 -3
  26. package/base/lib/dependencies/dependencies.js +34 -25
  27. package/base/lib/dependencies/dependencies.js.map +1 -1
  28. package/base/lib/dependencies/setupDependencies.d.ts +2 -4
  29. package/base/lib/dependencies/setupDependencies.js +3 -10
  30. package/base/lib/dependencies/setupDependencies.js.map +1 -1
  31. package/base/lib/exver/index.js +1 -1
  32. package/base/lib/exver/index.js.map +1 -1
  33. package/base/lib/index.d.ts +1 -0
  34. package/base/lib/index.js +2 -1
  35. package/base/lib/index.js.map +1 -1
  36. package/base/lib/inits/index.d.ts +2 -0
  37. package/base/lib/inits/index.js +19 -0
  38. package/base/lib/inits/index.js.map +1 -0
  39. package/base/lib/inits/setupInit.d.ts +9 -0
  40. package/base/lib/inits/setupInit.js +40 -0
  41. package/base/lib/inits/setupInit.js.map +1 -0
  42. package/base/lib/inits/setupUninit.d.ts +25 -0
  43. package/base/lib/inits/setupUninit.js +24 -0
  44. package/base/lib/inits/setupUninit.js.map +1 -0
  45. package/base/lib/interfaces/Host.js +18 -6
  46. package/base/lib/interfaces/Host.js.map +1 -1
  47. package/base/lib/interfaces/Origin.d.ts +2 -2
  48. package/base/lib/interfaces/Origin.js +3 -3
  49. package/base/lib/interfaces/Origin.js.map +1 -1
  50. package/base/lib/interfaces/ServiceInterfaceBuilder.d.ts +2 -2
  51. package/base/lib/interfaces/setupInterfaces.d.ts +2 -4
  52. package/base/lib/interfaces/setupInterfaces.js +8 -17
  53. package/base/lib/interfaces/setupInterfaces.js.map +1 -1
  54. package/base/lib/osBindings/ActionInput.d.ts +2 -0
  55. package/base/lib/osBindings/ActionInput.js +0 -1
  56. package/base/lib/osBindings/ActionInput.js.map +1 -1
  57. package/base/lib/osBindings/AddCategoryParams.d.ts +0 -2
  58. package/base/lib/osBindings/AddPackageToCategoryParams.d.ts +5 -0
  59. package/base/lib/osBindings/AddPackageToCategoryParams.js +3 -0
  60. package/base/lib/osBindings/AddPackageToCategoryParams.js.map +1 -0
  61. package/base/lib/osBindings/AddProxyParams.d.ts +5 -0
  62. package/base/lib/osBindings/AddProxyParams.js +4 -0
  63. package/base/lib/osBindings/AddProxyParams.js.map +1 -0
  64. package/base/lib/osBindings/AddTunnelParams.d.ts +5 -0
  65. package/base/lib/osBindings/AddTunnelParams.js +4 -0
  66. package/base/lib/osBindings/AddTunnelParams.js.map +1 -0
  67. package/base/lib/osBindings/AttachParams.d.ts +1 -0
  68. package/base/lib/osBindings/BindingGatewaySetEnabledParams.d.ts +6 -0
  69. package/base/lib/osBindings/BindingGatewaySetEnabledParams.js +3 -0
  70. package/base/lib/osBindings/BindingGatewaySetEnabledParams.js.map +1 -0
  71. package/base/lib/osBindings/Category.d.ts +0 -2
  72. package/base/lib/osBindings/Category.js +1 -0
  73. package/base/lib/osBindings/Category.js.map +1 -1
  74. package/base/lib/osBindings/CheckDependenciesResult.d.ts +3 -3
  75. package/base/lib/osBindings/ClearTasksParams.d.ts +5 -0
  76. package/base/lib/osBindings/ClearTasksParams.js +4 -0
  77. package/base/lib/osBindings/ClearTasksParams.js.map +1 -0
  78. package/base/lib/osBindings/CreateTaskParams.d.ts +15 -0
  79. package/base/lib/osBindings/CreateTaskParams.js +3 -0
  80. package/base/lib/osBindings/CreateTaskParams.js.map +1 -0
  81. package/base/lib/osBindings/DepInfo.d.ts +2 -3
  82. package/base/lib/osBindings/DnsSettings.d.ts +4 -0
  83. package/base/lib/osBindings/DnsSettings.js +4 -0
  84. package/base/lib/osBindings/DnsSettings.js.map +1 -0
  85. package/base/lib/osBindings/DomainConfig.d.ts +1 -0
  86. package/base/lib/osBindings/DomainSettings.d.ts +4 -0
  87. package/base/lib/osBindings/DomainSettings.js +3 -0
  88. package/base/lib/osBindings/DomainSettings.js.map +1 -0
  89. package/base/lib/osBindings/Domains.d.ts +7 -0
  90. package/base/lib/osBindings/Domains.js +3 -0
  91. package/base/lib/osBindings/Domains.js.map +1 -0
  92. package/base/lib/osBindings/EventId.d.ts +4 -0
  93. package/base/lib/osBindings/EventId.js +3 -0
  94. package/base/lib/osBindings/EventId.js.map +1 -0
  95. package/base/lib/osBindings/FileType.d.ts +1 -0
  96. package/base/lib/osBindings/FileType.js +4 -0
  97. package/base/lib/osBindings/FileType.js.map +1 -0
  98. package/base/lib/osBindings/ForgetGatewayParams.d.ts +4 -0
  99. package/base/lib/osBindings/ForgetGatewayParams.js +3 -0
  100. package/base/lib/osBindings/ForgetGatewayParams.js.map +1 -0
  101. package/base/lib/osBindings/ForgetInterfaceParams.d.ts +2 -1
  102. package/base/lib/osBindings/ForgetInterfaceParams.js +0 -1
  103. package/base/lib/osBindings/ForgetInterfaceParams.js.map +1 -1
  104. package/base/lib/osBindings/GatewayId.d.ts +1 -0
  105. package/base/lib/osBindings/GatewayId.js +4 -0
  106. package/base/lib/osBindings/GatewayId.js.map +1 -0
  107. package/base/lib/osBindings/GatewayInfo.d.ts +6 -0
  108. package/base/lib/osBindings/GatewayInfo.js +3 -0
  109. package/base/lib/osBindings/GatewayInfo.js.map +1 -0
  110. package/base/lib/osBindings/GetOsVersionParams.d.ts +3 -3
  111. package/base/lib/osBindings/GetPackageParams.d.ts +1 -1
  112. package/base/lib/osBindings/Host.d.ts +4 -3
  113. package/base/lib/osBindings/HostnameInfo.d.ts +2 -1
  114. package/base/lib/osBindings/IpHostname.d.ts +1 -2
  115. package/base/lib/osBindings/IpInfo.d.ts +2 -0
  116. package/base/lib/osBindings/LoginParams.d.ts +1 -2
  117. package/base/lib/osBindings/LoginParams.js +1 -0
  118. package/base/lib/osBindings/LoginParams.js.map +1 -1
  119. package/base/lib/osBindings/MainStatus.d.ts +0 -2
  120. package/base/lib/osBindings/Manifest.d.ts +3 -1
  121. package/base/lib/osBindings/Metadata.d.ts +5 -0
  122. package/base/lib/osBindings/Metadata.js +3 -0
  123. package/base/lib/osBindings/Metadata.js.map +1 -0
  124. package/base/lib/osBindings/MetadataSrc.d.ts +7 -0
  125. package/base/lib/osBindings/MetadataSrc.js +3 -0
  126. package/base/lib/osBindings/MetadataSrc.js.map +1 -0
  127. package/base/lib/osBindings/MountTarget.d.ts +2 -0
  128. package/base/lib/osBindings/NetInfo.d.ts +3 -1
  129. package/base/lib/osBindings/NetInfo.js +0 -1
  130. package/base/lib/osBindings/NetInfo.js.map +1 -1
  131. package/base/lib/osBindings/NetworkInfo.d.ts +5 -2
  132. package/base/lib/osBindings/NetworkInterfaceInfo.d.ts +3 -2
  133. package/base/lib/osBindings/NetworkInterfaceSetPublicParams.d.ts +2 -1
  134. package/base/lib/osBindings/NetworkInterfaceSetPublicParams.js +0 -1
  135. package/base/lib/osBindings/NetworkInterfaceSetPublicParams.js.map +1 -1
  136. package/base/lib/osBindings/PackageDataEntry.d.ts +5 -5
  137. package/base/lib/osBindings/PackageVersionInfo.d.ts +2 -0
  138. package/base/lib/osBindings/Progress.d.ts +2 -0
  139. package/base/lib/osBindings/Progress.js +0 -1
  140. package/base/lib/osBindings/Progress.js.map +1 -1
  141. package/base/lib/osBindings/ProgressUnits.d.ts +1 -0
  142. package/base/lib/osBindings/ProgressUnits.js +4 -0
  143. package/base/lib/osBindings/ProgressUnits.js.map +1 -0
  144. package/base/lib/osBindings/Proxies.d.ts +4 -0
  145. package/base/lib/osBindings/Proxies.js +3 -0
  146. package/base/lib/osBindings/Proxies.js.map +1 -0
  147. package/base/lib/osBindings/ProxyInfo.d.ts +4 -0
  148. package/base/lib/osBindings/ProxyInfo.js +4 -0
  149. package/base/lib/osBindings/ProxyInfo.js.map +1 -0
  150. package/base/lib/osBindings/PublicDomainConfig.d.ts +6 -0
  151. package/base/lib/osBindings/PublicDomainConfig.js +3 -0
  152. package/base/lib/osBindings/PublicDomainConfig.js.map +1 -0
  153. package/base/lib/osBindings/RemoveAdminParams.d.ts +4 -0
  154. package/base/lib/osBindings/RemoveAdminParams.js +3 -0
  155. package/base/lib/osBindings/RemoveAdminParams.js.map +1 -0
  156. package/base/lib/osBindings/RemoveAssetParams.d.ts +4 -0
  157. package/base/lib/osBindings/RemoveAssetParams.js +4 -0
  158. package/base/lib/osBindings/RemoveAssetParams.js.map +1 -0
  159. package/base/lib/osBindings/RemovePackageFromCategoryParams.d.ts +5 -0
  160. package/base/lib/osBindings/RemovePackageFromCategoryParams.js +3 -0
  161. package/base/lib/osBindings/RemovePackageFromCategoryParams.js.map +1 -0
  162. package/base/lib/osBindings/RemovePackageParams.d.ts +6 -0
  163. package/base/lib/osBindings/RemovePackageParams.js +3 -0
  164. package/base/lib/osBindings/RemovePackageParams.js.map +1 -0
  165. package/base/lib/osBindings/RemoveProxyParams.d.ts +3 -0
  166. package/base/lib/osBindings/RemoveProxyParams.js +4 -0
  167. package/base/lib/osBindings/RemoveProxyParams.js.map +1 -0
  168. package/base/lib/osBindings/RemoveTunnelParams.d.ts +4 -0
  169. package/base/lib/osBindings/RemoveTunnelParams.js +3 -0
  170. package/base/lib/osBindings/RemoveTunnelParams.js.map +1 -0
  171. package/base/lib/osBindings/RenameGatewayParams.d.ts +5 -0
  172. package/base/lib/osBindings/RenameGatewayParams.js +3 -0
  173. package/base/lib/osBindings/RenameGatewayParams.js.map +1 -0
  174. package/base/lib/osBindings/RenameInterfaceParams.d.ts +5 -0
  175. package/base/lib/osBindings/RenameInterfaceParams.js +3 -0
  176. package/base/lib/osBindings/RenameInterfaceParams.js.map +1 -0
  177. package/base/lib/osBindings/ServerInfo.d.ts +2 -1
  178. package/base/lib/osBindings/Sessions.d.ts +2 -5
  179. package/base/lib/osBindings/Sessions.js +0 -1
  180. package/base/lib/osBindings/Sessions.js.map +1 -1
  181. package/base/lib/osBindings/SetupExecuteParams.d.ts +1 -0
  182. package/base/lib/osBindings/Task.d.ts +13 -0
  183. package/base/lib/osBindings/Task.js +3 -0
  184. package/base/lib/osBindings/Task.js.map +1 -0
  185. package/base/lib/osBindings/TaskCondition.d.ts +1 -0
  186. package/base/lib/osBindings/TaskCondition.js +4 -0
  187. package/base/lib/osBindings/TaskCondition.js.map +1 -0
  188. package/base/lib/osBindings/TaskEntry.d.ts +5 -0
  189. package/base/lib/osBindings/TaskEntry.js +3 -0
  190. package/base/lib/osBindings/TaskEntry.js.map +1 -0
  191. package/base/lib/osBindings/TaskInput.d.ts +4 -0
  192. package/base/lib/osBindings/TaskInput.js +4 -0
  193. package/base/lib/osBindings/TaskInput.js.map +1 -0
  194. package/base/lib/osBindings/TaskSeverity.d.ts +1 -0
  195. package/base/lib/osBindings/TaskSeverity.js +4 -0
  196. package/base/lib/osBindings/TaskSeverity.js.map +1 -0
  197. package/base/lib/osBindings/TaskTrigger.d.ts +5 -0
  198. package/base/lib/osBindings/TaskTrigger.js +3 -0
  199. package/base/lib/osBindings/TaskTrigger.js.map +1 -0
  200. package/base/lib/osBindings/UnsetInboundParams.d.ts +2 -1
  201. package/base/lib/osBindings/UnsetInboundParams.js +0 -1
  202. package/base/lib/osBindings/UnsetInboundParams.js.map +1 -1
  203. package/base/lib/osBindings/UnsetPublicParams.d.ts +2 -1
  204. package/base/lib/osBindings/UnsetPublicParams.js +0 -1
  205. package/base/lib/osBindings/UnsetPublicParams.js.map +1 -1
  206. package/base/lib/osBindings/UpdatingState.d.ts +1 -0
  207. package/base/lib/osBindings/index.d.ts +30 -18
  208. package/base/lib/s9pk/index.d.ts +2 -3
  209. package/base/lib/s9pk/index.js +9 -15
  210. package/base/lib/s9pk/index.js.map +1 -1
  211. package/base/lib/types/ManifestTypes.d.ts +4 -0
  212. package/base/lib/types.d.ts +23 -34
  213. package/base/lib/types.js +13 -0
  214. package/base/lib/types.js.map +1 -1
  215. package/base/lib/util/Drop.d.ts +47 -0
  216. package/base/lib/util/Drop.js +130 -0
  217. package/base/lib/util/Drop.js.map +1 -0
  218. package/base/lib/util/GetSystemSmtp.d.ts +11 -2
  219. package/base/lib/util/GetSystemSmtp.js +33 -7
  220. package/base/lib/util/GetSystemSmtp.js.map +1 -1
  221. package/base/lib/util/deepMerge.js +6 -1
  222. package/base/lib/util/deepMerge.js.map +1 -1
  223. package/base/lib/util/getServiceInterface.d.ts +53 -5
  224. package/base/lib/util/getServiceInterface.js +54 -19
  225. package/base/lib/util/getServiceInterface.js.map +1 -1
  226. package/base/lib/util/getServiceInterfaces.d.ts +11 -2
  227. package/base/lib/util/getServiceInterfaces.js +33 -7
  228. package/base/lib/util/getServiceInterfaces.js.map +1 -1
  229. package/base/lib/util/graph.d.ts +1 -0
  230. package/base/lib/util/graph.js +12 -0
  231. package/base/lib/util/graph.js.map +1 -1
  232. package/base/lib/util/index.d.ts +1 -2
  233. package/base/lib/util/index.js +5 -8
  234. package/base/lib/util/index.js.map +1 -1
  235. package/base/lib/util/ip.d.ts +19 -0
  236. package/base/lib/util/ip.js +92 -0
  237. package/base/lib/util/ip.js.map +1 -0
  238. package/package/lib/StartSdk.d.ts +116 -572
  239. package/package/lib/StartSdk.js +111 -435
  240. package/package/lib/StartSdk.js.map +1 -1
  241. package/package/lib/backup/Backups.d.ts +9 -3
  242. package/package/lib/backup/Backups.js +38 -28
  243. package/package/lib/backup/Backups.js.map +1 -1
  244. package/package/lib/backup/setupBackups.d.ts +5 -2
  245. package/package/lib/backup/setupBackups.js +7 -5
  246. package/package/lib/backup/setupBackups.js.map +1 -1
  247. package/package/lib/health/HealthCheck.d.ts +0 -1
  248. package/package/lib/health/HealthCheck.js +1 -7
  249. package/package/lib/health/HealthCheck.js.map +1 -1
  250. package/package/lib/health/checkFns/runHealthScript.js +1 -1
  251. package/package/lib/health/checkFns/runHealthScript.js.map +1 -1
  252. package/package/lib/index.d.ts +0 -3
  253. package/package/lib/index.js +1 -8
  254. package/package/lib/index.js.map +1 -1
  255. package/package/lib/inits/index.d.ts +2 -3
  256. package/package/lib/inits/index.js +16 -3
  257. package/package/lib/inits/index.js.map +1 -1
  258. package/package/lib/inits/setupInit.d.ts +7 -13
  259. package/package/lib/inits/setupInit.js +22 -48
  260. package/package/lib/inits/setupInit.js.map +1 -1
  261. package/package/lib/inits/setupInstall.d.ts +10 -10
  262. package/package/lib/inits/setupInstall.js.map +1 -1
  263. package/package/lib/inits/setupUninit.d.ts +7 -0
  264. package/package/lib/inits/setupUninit.js +14 -0
  265. package/package/lib/inits/setupUninit.js.map +1 -0
  266. package/package/lib/inits/setupUninstall.d.ts +5 -5
  267. package/package/lib/inits/setupUninstall.js.map +1 -1
  268. package/package/lib/mainFn/CommandController.d.ts +6 -22
  269. package/package/lib/mainFn/CommandController.js +68 -41
  270. package/package/lib/mainFn/CommandController.js.map +1 -1
  271. package/package/lib/mainFn/Daemon.d.ts +15 -20
  272. package/package/lib/mainFn/Daemon.js +71 -17
  273. package/package/lib/mainFn/Daemon.js.map +1 -1
  274. package/package/lib/mainFn/Daemons.d.ts +76 -44
  275. package/package/lib/mainFn/Daemons.js +105 -29
  276. package/package/lib/mainFn/Daemons.js.map +1 -1
  277. package/package/lib/mainFn/HealthDaemon.d.ts +6 -5
  278. package/package/lib/mainFn/HealthDaemon.js +79 -38
  279. package/package/lib/mainFn/HealthDaemon.js.map +1 -1
  280. package/package/lib/mainFn/Mounts.d.ts +32 -45
  281. package/package/lib/mainFn/Mounts.js +13 -55
  282. package/package/lib/mainFn/Mounts.js.map +1 -1
  283. package/package/lib/mainFn/Oneshot.d.ts +12 -0
  284. package/package/lib/mainFn/Oneshot.js +23 -0
  285. package/package/lib/mainFn/Oneshot.js.map +1 -0
  286. package/package/lib/mainFn/index.d.ts +1 -1
  287. package/package/lib/manifest/setupManifest.js +3 -0
  288. package/package/lib/manifest/setupManifest.js.map +1 -1
  289. package/package/lib/test/host.test.js +1 -1
  290. package/package/lib/test/host.test.js.map +1 -1
  291. package/package/lib/test/inputSpecBuilder.test.js +153 -158
  292. package/package/lib/test/inputSpecBuilder.test.js.map +1 -1
  293. package/package/lib/test/output.d.ts +8 -37
  294. package/package/lib/test/output.js +41 -40
  295. package/package/lib/test/output.js.map +1 -1
  296. package/package/lib/test/output.sdk.d.ts +154 -949
  297. package/package/lib/test/output.sdk.js +1 -4
  298. package/package/lib/test/output.sdk.js.map +1 -1
  299. package/package/lib/test/output.test.js +12 -8
  300. package/package/lib/test/output.test.js.map +1 -1
  301. package/package/lib/util/Drop.d.ts +4 -2
  302. package/package/lib/util/Drop.js +29 -7
  303. package/package/lib/util/Drop.js.map +1 -1
  304. package/package/lib/util/GetSslCertificate.d.ts +11 -2
  305. package/package/lib/util/GetSslCertificate.js +33 -7
  306. package/package/lib/util/GetSslCertificate.js.map +1 -1
  307. package/package/lib/util/SubContainer.d.ts +131 -37
  308. package/package/lib/util/SubContainer.js +155 -42
  309. package/package/lib/util/SubContainer.js.map +1 -1
  310. package/package/lib/util/fileHelper.d.ts +50 -17
  311. package/package/lib/util/fileHelper.js +166 -52
  312. package/package/lib/util/fileHelper.js.map +1 -1
  313. package/package/lib/util/index.d.ts +1 -2
  314. package/package/lib/util/index.js +2 -4
  315. package/package/lib/util/index.js.map +1 -1
  316. package/package/lib/version/VersionGraph.d.ts +27 -5
  317. package/package/lib/version/VersionGraph.js +110 -24
  318. package/package/lib/version/VersionGraph.js.map +1 -1
  319. package/package/lib/version/VersionInfo.d.ts +8 -3
  320. package/package/lib/version/VersionInfo.js.map +1 -1
  321. package/package/package.json +63 -0
  322. package/package/scripts/oldSpecToBuilder.js +5 -4
  323. package/package/scripts/oldSpecToBuilder.js.map +1 -1
  324. package/package.json +7 -8
@@ -33,23 +33,48 @@ var __importStar = (this && this.__importStar) || (function () {
33
33
  };
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
- exports.ExitError = exports.SubContainerHandle = exports.SubContainer = exports.execFile = void 0;
36
+ exports.ExitError = exports.SubContainerRc = exports.SubContainerOwned = exports.execFile = void 0;
37
37
  const fs = __importStar(require("fs/promises"));
38
38
  const cp = __importStar(require("child_process"));
39
39
  const util_1 = require("util");
40
40
  const node_buffer_1 = require("node:buffer");
41
41
  const once_1 = require("../../../base/lib/util/once");
42
- const Drop_1 = require("./Drop");
42
+ const Drop_1 = require("../../../base/lib/util/Drop");
43
43
  exports.execFile = (0, util_1.promisify)(cp.execFile);
44
44
  const False = () => false;
45
45
  const TIMES_TO_WAIT_FOR_PROC = 100;
46
+ async function prepBind(from, to, type) {
47
+ const fromMeta = from ? await fs.stat(from).catch((_) => null) : null;
48
+ const toMeta = await fs.stat(to).catch((_) => null);
49
+ if (type === "file" || (type === "infer" && from && fromMeta?.isFile())) {
50
+ if (toMeta && toMeta.isDirectory())
51
+ await fs.rmdir(to, { recursive: false });
52
+ if (from && !fromMeta) {
53
+ await fs.mkdir(from.replace(/\/[^\/]*\/?$/, ""), { recursive: true });
54
+ await fs.writeFile(from, "");
55
+ }
56
+ if (!toMeta) {
57
+ await fs.mkdir(to.replace(/\/[^\/]*\/?$/, ""), { recursive: true });
58
+ await fs.writeFile(to, "");
59
+ }
60
+ }
61
+ else {
62
+ if (toMeta && toMeta.isFile() && !toMeta.size)
63
+ await fs.rm(to);
64
+ if (from && !fromMeta)
65
+ await fs.mkdir(from, { recursive: true });
66
+ if (!toMeta)
67
+ await fs.mkdir(to, { recursive: true });
68
+ }
69
+ }
70
+ async function bind(from, to, type) {
71
+ await prepBind(from, to, type);
72
+ await (0, exports.execFile)("mount", ["--bind", from, to]);
73
+ }
46
74
  /**
47
75
  * Want to limit what we can do in a container, so we want to launch a container with a specific image and the mounts.
48
- *
49
- * Implements:
50
- * @see {@link ExecSpawnable}
51
76
  */
52
- class SubContainer extends Drop_1.Drop {
77
+ class SubContainerOwned extends Drop_1.Drop {
53
78
  constructor(effects, imageId, rootfs, guid) {
54
79
  super();
55
80
  this.effects = effects;
@@ -57,9 +82,10 @@ class SubContainer extends Drop_1.Drop {
57
82
  this.rootfs = rootfs;
58
83
  this.guid = guid;
59
84
  this.destroyed = false;
85
+ this.rcs = 0;
60
86
  this.leaderExited = false;
61
87
  this.leaderExited = false;
62
- this.leader = cp.spawn("start-cli", ["subcontainer", "launch", rootfs], {
88
+ this.leader = cp.spawn("start-container", ["subcontainer", "launch", rootfs], {
63
89
  killSignal: "SIGKILL",
64
90
  stdio: "inherit",
65
91
  });
@@ -75,7 +101,7 @@ class SubContainer extends Drop_1.Drop {
75
101
  imageId: this.imageId,
76
102
  rootfs: this.rootfs,
77
103
  });
78
- reject(new Error(`Failed to start subcontainer ${this.imageId}`));
104
+ return reject(new Error(`Failed to start subcontainer ${this.imageId}`));
79
105
  }
80
106
  await wait(1);
81
107
  }
@@ -88,7 +114,7 @@ class SubContainer extends Drop_1.Drop {
88
114
  imageId,
89
115
  name,
90
116
  });
91
- const res = new SubContainer(effects, imageId, rootfs, guid);
117
+ const res = new SubContainerOwned(effects, imageId, rootfs, guid);
92
118
  try {
93
119
  if (mounts) {
94
120
  await res.mount(mounts);
@@ -108,12 +134,13 @@ class SubContainer extends Drop_1.Drop {
108
134
  }
109
135
  return res;
110
136
  }
111
- finally {
137
+ catch (e) {
112
138
  await res.destroy();
139
+ throw e;
113
140
  }
114
141
  }
115
- static async with(effects, image, mounts, name, fn) {
116
- const subContainer = await SubContainer.of(effects, image, mounts, name);
142
+ static async withTemp(effects, image, mounts, name, fn) {
143
+ const subContainer = await SubContainerOwned.of(effects, image, mounts, name);
117
144
  try {
118
145
  return await fn(subContainer);
119
146
  }
@@ -133,10 +160,8 @@ class SubContainer extends Drop_1.Drop {
133
160
  ? options.subpath
134
161
  : `/${options.subpath}`
135
162
  : "/";
136
- const from = `/media/startos/volumes/${options.id}${subpath}`;
137
- await fs.mkdir(from, { recursive: true });
138
- await fs.mkdir(path, { recursive: true });
139
- await (0, exports.execFile)("mount", ["--bind", from, path]);
163
+ const from = `/media/startos/volumes/${options.volumeId}${subpath}`;
164
+ await bind(from, path, mount.options.filetype);
140
165
  }
141
166
  else if (options.type === "assets") {
142
167
  const subpath = options.subpath
@@ -145,11 +170,10 @@ class SubContainer extends Drop_1.Drop {
145
170
  : `/${options.subpath}`
146
171
  : "/";
147
172
  const from = `/media/startos/assets/${subpath}`;
148
- await fs.mkdir(from, { recursive: true });
149
- await fs.mkdir(path, { recursive: true });
150
- await (0, exports.execFile)("mount", ["--bind", from, path]);
173
+ await bind(from, path, mount.options.filetype);
151
174
  }
152
175
  else if (options.type === "pointer") {
176
+ await prepBind(null, path, options.filetype);
153
177
  await this.effects.mount({ location: path, target: options });
154
178
  }
155
179
  else if (options.type === "backup") {
@@ -159,9 +183,7 @@ class SubContainer extends Drop_1.Drop {
159
183
  : `/${options.subpath}`
160
184
  : "/";
161
185
  const from = `/media/startos/backup${subpath}`;
162
- await fs.mkdir(from, { recursive: true });
163
- await fs.mkdir(path, { recursive: true });
164
- await (0, exports.execFile)("mount", ["--bind", from, path]);
186
+ await bind(from, path, mount.options.filetype);
165
187
  }
166
188
  else {
167
189
  throw new Error(`unknown type ${options.type}`);
@@ -201,16 +223,18 @@ class SubContainer extends Drop_1.Drop {
201
223
  };
202
224
  }
203
225
  onDrop() {
226
+ console.log(`Cleaning up dangling subcontainer ${this.guid}`);
204
227
  this.destroy();
205
228
  }
206
229
  /**
207
230
  * @description run a command inside this subcontainer
231
+ * DOES NOT THROW ON NONZERO EXIT CODE (see execFail)
208
232
  * @param commands an array representing the command and args to execute
209
233
  * @param options
210
234
  * @param timeoutMs how long to wait before killing the command in ms
211
235
  * @returns
212
236
  */
213
- async exec(command, options, timeoutMs = 30000) {
237
+ async exec(command, options, timeoutMs = 30000, abort) {
214
238
  await this.waitProc();
215
239
  const imageMeta = await fs
216
240
  .readFile(`/media/startos/images/${this.imageId}.json`, {
@@ -229,7 +253,7 @@ class SubContainer extends Drop_1.Drop {
229
253
  workdir = options.cwd;
230
254
  delete options.cwd;
231
255
  }
232
- const child = cp.spawn("start-cli", [
256
+ const child = cp.spawn("start-container", [
233
257
  "subcontainer",
234
258
  "exec",
235
259
  `--env=/media/startos/images/${this.imageId}.env`,
@@ -239,6 +263,7 @@ class SubContainer extends Drop_1.Drop {
239
263
  this.rootfs,
240
264
  ...command,
241
265
  ], options || {});
266
+ abort?.signal.addEventListener("abort", () => child.kill("SIGKILL"));
242
267
  if (options?.input) {
243
268
  await new Promise((resolve, reject) => {
244
269
  try {
@@ -285,15 +310,33 @@ class SubContainer extends Drop_1.Drop {
285
310
  child.stderr.on("data", appendData(stderr));
286
311
  child.on("exit", (code, signal) => {
287
312
  clearTimeout(killTimeout);
288
- resolve({
313
+ const result = {
289
314
  exitCode: code,
290
315
  exitSignal: signal,
291
316
  stdout: stdout.data,
292
317
  stderr: stderr.data,
318
+ };
319
+ resolve({
320
+ throw: () => !code && !signal
321
+ ? { stdout: stdout.data, stderr: stderr.data }
322
+ : (() => {
323
+ throw new ExitError(command[0], result);
324
+ })(),
325
+ ...result,
293
326
  });
294
327
  });
295
328
  });
296
329
  }
330
+ /**
331
+ * @description run a command inside this subcontainer, throwing on non-zero exit status
332
+ * @param commands an array representing the command and args to execute
333
+ * @param options
334
+ * @param timeoutMs how long to wait before killing the command in ms
335
+ * @returns
336
+ */
337
+ async execFail(command, options, timeoutMs, abort) {
338
+ return this.exec(command, options, timeoutMs, abort).then((res) => res.throw());
339
+ }
297
340
  async launch(command, options) {
298
341
  await this.waitProc();
299
342
  const imageMeta = await fs
@@ -315,7 +358,7 @@ class SubContainer extends Drop_1.Drop {
315
358
  }
316
359
  await this.killLeader();
317
360
  this.leaderExited = false;
318
- this.leader = cp.spawn("start-cli", [
361
+ this.leader = cp.spawn("start-container", [
319
362
  "subcontainer",
320
363
  "launch",
321
364
  `--env=/media/startos/images/${this.imageId}.env`,
@@ -349,7 +392,7 @@ class SubContainer extends Drop_1.Drop {
349
392
  workdir = options.cwd;
350
393
  delete options.cwd;
351
394
  }
352
- return cp.spawn("start-cli", [
395
+ return cp.spawn("start-container", [
353
396
  "subcontainer",
354
397
  "exec",
355
398
  `--env=/media/startos/images/${this.imageId}.env`,
@@ -360,28 +403,98 @@ class SubContainer extends Drop_1.Drop {
360
403
  ...command,
361
404
  ], options);
362
405
  }
406
+ rc() {
407
+ return new SubContainerRc(this);
408
+ }
409
+ isOwned() {
410
+ return true;
411
+ }
363
412
  }
364
- exports.SubContainer = SubContainer;
365
- /**
366
- * Take an subcontainer but remove the ability to add the mounts and the destroy function.
367
- * Lets other functions, like health checks, to not destroy the parents.
368
- *
369
- */
370
- class SubContainerHandle {
371
- constructor(subContainer) {
372
- this.subContainer = subContainer;
413
+ exports.SubContainerOwned = SubContainerOwned;
414
+ class SubContainerRc extends Drop_1.Drop {
415
+ get imageId() {
416
+ return this.subcontainer.imageId;
417
+ }
418
+ get rootfs() {
419
+ return this.subcontainer.rootfs;
420
+ }
421
+ get guid() {
422
+ return this.subcontainer.guid;
423
+ }
424
+ constructor(subcontainer) {
425
+ subcontainer.rcs++;
426
+ super();
427
+ this.subcontainer = subcontainer;
428
+ this.destroyed = false;
429
+ }
430
+ static async of(effects, image, mounts, name) {
431
+ return new SubContainerRc(await SubContainerOwned.of(effects, image, mounts, name));
432
+ }
433
+ static async withTemp(effects, image, mounts, name, fn) {
434
+ const subContainer = await SubContainerRc.of(effects, image, mounts, name);
435
+ try {
436
+ return await fn(subContainer);
437
+ }
438
+ finally {
439
+ await subContainer.destroy();
440
+ }
441
+ }
442
+ async mount(mounts) {
443
+ await this.subcontainer.mount(mounts);
444
+ return this;
373
445
  }
374
446
  get destroy() {
375
- return undefined;
447
+ return async () => {
448
+ if (!this.destroyed) {
449
+ const rcs = --this.subcontainer.rcs;
450
+ if (rcs <= 0) {
451
+ await this.subcontainer.destroy();
452
+ if (rcs < 0)
453
+ console.error(new Error("UNREACHABLE: rcs < 0").stack);
454
+ }
455
+ this.destroyed = true;
456
+ }
457
+ return null;
458
+ };
459
+ }
460
+ onDrop() {
461
+ this.destroy();
462
+ }
463
+ /**
464
+ * @description run a command inside this subcontainer
465
+ * DOES NOT THROW ON NONZERO EXIT CODE (see execFail)
466
+ * @param commands an array representing the command and args to execute
467
+ * @param options
468
+ * @param timeoutMs how long to wait before killing the command in ms
469
+ * @returns
470
+ */
471
+ async exec(command, options, timeoutMs, abort) {
472
+ return this.subcontainer.exec(command, options, timeoutMs, abort);
473
+ }
474
+ /**
475
+ * @description run a command inside this subcontainer, throwing on non-zero exit status
476
+ * @param commands an array representing the command and args to execute
477
+ * @param options
478
+ * @param timeoutMs how long to wait before killing the command in ms
479
+ * @returns
480
+ */
481
+ async execFail(command, options, timeoutMs, abort) {
482
+ return this.subcontainer.execFail(command, options, timeoutMs, abort);
483
+ }
484
+ async launch(command, options) {
485
+ return this.subcontainer.launch(command, options);
486
+ }
487
+ async spawn(command, options = { stdio: "inherit" }) {
488
+ return this.subcontainer.spawn(command, options);
376
489
  }
377
- exec(command, options, timeoutMs) {
378
- return this.subContainer.exec(command, options, timeoutMs);
490
+ rc() {
491
+ return this.subcontainer.rc();
379
492
  }
380
- spawn(command, options = { stdio: "inherit" }) {
381
- return this.subContainer.spawn(command, options);
493
+ isOwned() {
494
+ return false;
382
495
  }
383
496
  }
384
- exports.SubContainerHandle = SubContainerHandle;
497
+ exports.SubContainerRc = SubContainerRc;
385
498
  function wait(time) {
386
499
  return new Promise((resolve) => setTimeout(resolve, time));
387
500
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SubContainer.js","sourceRoot":"","sources":["../../../../package/lib/util/SubContainer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SubContainer.js","sourceRoot":"","sources":["../../../../package/lib/util/SubContainer.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,27 @@
1
1
  import * as matches from "ts-matches";
2
+ import * as TOML from "@iarna/toml";
2
3
  import * as INI from "ini";
3
4
  import * as T from "../../../base/lib/types";
5
+ export type Transformers<Raw = unknown, Transformed = unknown> = {
6
+ onRead: (value: Raw) => Transformed;
7
+ onWrite: (value: Transformed) => Raw;
8
+ };
9
+ type ToPath = string | {
10
+ volumeId: T.VolumeId;
11
+ subpath: string;
12
+ };
13
+ type Validator<T, U> = matches.Validator<T, U> | matches.Validator<unknown, U>;
14
+ type ReadType<A> = {
15
+ once: () => Promise<A | null>;
16
+ const: (effects: T.Effects) => Promise<A | null>;
17
+ watch: (effects: T.Effects, abort?: AbortSignal) => AsyncGenerator<A | null, null, unknown>;
18
+ onChange: (effects: T.Effects, callback: (value: A | null, error?: Error) => {
19
+ cancel: boolean;
20
+ } | Promise<{
21
+ cancel: boolean;
22
+ }>) => void;
23
+ waitFor: (effects: T.Effects, pred: (value: A | null) => boolean) => Promise<A | null>;
24
+ };
4
25
  /**
5
26
  * @description Use this class to read/write an underlying configuration file belonging to the upstream service.
6
27
  *
@@ -62,44 +83,56 @@ export declare class FileHelper<A> {
62
83
  private readConst;
63
84
  private readWatch;
64
85
  private readOnChange;
65
- get read(): {
66
- once: () => Promise<A | null>;
67
- const: (effects: T.Effects) => Promise<A | null>;
68
- watch: (effects: T.Effects) => AsyncGenerator<Awaited<A> | null, null, unknown>;
69
- onChange: (effects: T.Effects, callback: (value: A | null, error?: Error) => void | Promise<void>) => void;
70
- };
86
+ private readWaitFor;
87
+ read(): ReadType<A>;
88
+ read<B>(map: (value: A) => B, eq?: (left: B | null | undefined, right: B | null) => boolean): ReadType<B>;
71
89
  /**
72
90
  * Accepts full structured data and overwrites the existing file on disk if it exists.
73
91
  */
74
- write(effects: T.Effects, data: A): Promise<null>;
92
+ write(effects: T.Effects, data: T.AllowReadonly<A> | A, options?: {
93
+ allowWriteAfterConst?: boolean;
94
+ }): Promise<null>;
75
95
  /**
76
96
  * Accepts partial structured data and performs a merge with the existing file on disk.
77
97
  */
78
- merge(effects: T.Effects, data: T.DeepPartial<A>): Promise<null>;
98
+ merge(effects: T.Effects, data: T.AllowReadonly<T.DeepPartial<A>>, options?: {
99
+ allowWriteAfterConst?: boolean;
100
+ }): Promise<null>;
79
101
  /**
80
102
  * We wanted to be able to have a fileHelper, and just modify the path later in time.
81
103
  * Like one behavior of another dependency or something similar.
82
104
  */
83
- withPath(path: string): FileHelper<A>;
105
+ withPath(path: ToPath): FileHelper<A>;
84
106
  /**
85
107
  * Create a File Helper for an arbitrary file type.
86
108
  *
87
109
  * Provide custom functions for translating data to/from the file format.
88
110
  */
89
- static raw<A>(path: string, toFile: (dataIn: A) => string, fromFile: (rawData: string) => unknown, validate: (data: unknown) => A): FileHelper<A>;
111
+ static raw<A>(path: ToPath, toFile: (dataIn: A) => string, fromFile: (rawData: string) => unknown, validate: (data: unknown) => A): FileHelper<A>;
112
+ private static rawTransformed;
90
113
  /**
91
- * Create a File Helper for a .json file.
114
+ * Create a File Helper for a text file
92
115
  */
93
- static json<A>(path: string, shape: matches.Validator<unknown, A>): FileHelper<A>;
116
+ static string(path: ToPath): FileHelper<string>;
117
+ static string<A extends string>(path: ToPath, shape: Validator<string, A>): FileHelper<A>;
118
+ static string<A extends Transformed, Transformed = string>(path: ToPath, shape: Validator<Transformed, A>, transformers: Transformers<string, Transformed>): FileHelper<A>;
94
119
  /**
95
- * Create a File Helper for a .toml file
120
+ * Create a File Helper for a .json file.
96
121
  */
97
- static toml<A extends Record<string, unknown>>(path: string, shape: matches.Validator<unknown, A>): FileHelper<A>;
122
+ static json<A>(path: ToPath, shape: Validator<unknown, A>, transformers?: Transformers): FileHelper<A>;
98
123
  /**
99
124
  * Create a File Helper for a .yaml file
100
125
  */
101
- static yaml<A extends Record<string, unknown>>(path: string, shape: matches.Validator<unknown, A>): FileHelper<A>;
102
- static ini<A extends Record<string, unknown>>(path: string, shape: matches.Validator<unknown, A>, options?: INI.EncodeOptions & INI.DecodeOptions): FileHelper<A>;
103
- static env<A extends Record<string, string>>(path: string, shape: matches.Validator<unknown, A>): FileHelper<A>;
126
+ static yaml<A extends Record<string, unknown>>(path: ToPath, shape: Validator<Record<string, unknown>, A>): FileHelper<A>;
127
+ static yaml<A extends Transformed, Transformed = Record<string, unknown>>(path: ToPath, shape: Validator<Transformed, A>, transformers: Transformers<Record<string, unknown>, Transformed>): FileHelper<A>;
128
+ /**
129
+ * Create a File Helper for a .toml file
130
+ */
131
+ static toml<A extends TOML.JsonMap>(path: ToPath, shape: Validator<TOML.JsonMap, A>): FileHelper<A>;
132
+ static toml<A extends Transformed, Transformed = TOML.JsonMap>(path: ToPath, shape: Validator<Transformed, A>, transformers: Transformers<TOML.JsonMap, Transformed>): FileHelper<A>;
133
+ static ini<A extends Record<string, unknown>>(path: ToPath, shape: Validator<Record<string, unknown>, A>, options?: INI.EncodeOptions & INI.DecodeOptions): FileHelper<A>;
134
+ static ini<A extends Transformed, Transformed = Record<string, unknown>>(path: ToPath, shape: Validator<Transformed, A>, options: INI.EncodeOptions & INI.DecodeOptions, transformers: Transformers<Record<string, unknown>, Transformed>): FileHelper<A>;
135
+ static env<A extends Record<string, string>>(path: ToPath, shape: Validator<Record<string, string>, A>): FileHelper<A>;
136
+ static env<A extends Transformed, Transformed = Record<string, string>>(path: ToPath, shape: Validator<Transformed, A>, transformers: Transformers<Record<string, string>, Transformed>): FileHelper<A>;
104
137
  }
105
138
  export default FileHelper;