@harperfast/harper 5.2.0-beta.4 → 5.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/bin/backup.ts +169 -0
  2. package/bin/cliOperations.ts +92 -73
  3. package/bin/copyDb.ts +21 -4
  4. package/bin/harper.ts +43 -55
  5. package/bin/help.ts +216 -0
  6. package/components/Application.ts +236 -46
  7. package/components/ApplicationScope.ts +26 -0
  8. package/components/EntryHandler.ts +410 -105
  9. package/components/RuntimeModuleTracker.ts +189 -0
  10. package/components/Scope.ts +120 -30
  11. package/components/componentLoader.ts +177 -25
  12. package/components/deployLifecycle.ts +119 -33
  13. package/components/mcp/toolRegistry.ts +10 -0
  14. package/components/mcp/tools/application.ts +12 -5
  15. package/components/mcp/tools/operations.ts +9 -0
  16. package/components/mcp/tools/schemas/operationDescriptions.ts +3 -0
  17. package/components/mcp/tools/schemas/operations.ts +9 -0
  18. package/components/operations.js +5 -6
  19. package/components/operationsValidation.js +32 -2
  20. package/components/scopeMount.ts +150 -0
  21. package/config/configUtils.ts +12 -9
  22. package/config-root.schema.json +14 -0
  23. package/dataLayer/backupManifest.ts +102 -0
  24. package/dataLayer/blobBackup.ts +286 -0
  25. package/dataLayer/harperBridge/ResourceBridge.ts +69 -5
  26. package/dataLayer/hdbInfoController.ts +8 -0
  27. package/dataLayer/restoreMarker.ts +276 -0
  28. package/dataLayer/rocksdbBackup.ts +1100 -0
  29. package/dataLayer/schemaDescribe.ts +2 -1
  30. package/dist/bin/backup.d.ts +9 -0
  31. package/dist/bin/backup.js +192 -0
  32. package/dist/bin/backup.js.map +1 -0
  33. package/dist/bin/cliOperations.d.ts +13 -0
  34. package/dist/bin/cliOperations.js +89 -70
  35. package/dist/bin/cliOperations.js.map +1 -1
  36. package/dist/bin/copyDb.js +13 -2
  37. package/dist/bin/copyDb.js.map +1 -1
  38. package/dist/bin/harper.d.ts +13 -0
  39. package/dist/bin/harper.js +45 -56
  40. package/dist/bin/harper.js.map +1 -1
  41. package/dist/bin/help.d.ts +8 -0
  42. package/dist/bin/help.js +192 -0
  43. package/dist/bin/help.js.map +1 -0
  44. package/dist/components/Application.d.ts +16 -1
  45. package/dist/components/Application.js +210 -38
  46. package/dist/components/Application.js.map +1 -1
  47. package/dist/components/ApplicationScope.d.ts +7 -0
  48. package/dist/components/ApplicationScope.js +22 -0
  49. package/dist/components/ApplicationScope.js.map +1 -1
  50. package/dist/components/EntryHandler.d.ts +4 -4
  51. package/dist/components/EntryHandler.js +386 -95
  52. package/dist/components/EntryHandler.js.map +1 -1
  53. package/dist/components/RuntimeModuleTracker.d.ts +11 -0
  54. package/dist/components/RuntimeModuleTracker.js +189 -0
  55. package/dist/components/RuntimeModuleTracker.js.map +1 -0
  56. package/dist/components/Scope.d.ts +38 -1
  57. package/dist/components/Scope.js +117 -28
  58. package/dist/components/Scope.js.map +1 -1
  59. package/dist/components/componentLoader.d.ts +2 -6
  60. package/dist/components/componentLoader.js +160 -18
  61. package/dist/components/componentLoader.js.map +1 -1
  62. package/dist/components/deployLifecycle.d.ts +6 -2
  63. package/dist/components/deployLifecycle.js +109 -31
  64. package/dist/components/deployLifecycle.js.map +1 -1
  65. package/dist/components/mcp/toolRegistry.d.ts +7 -0
  66. package/dist/components/mcp/toolRegistry.js +10 -0
  67. package/dist/components/mcp/toolRegistry.js.map +1 -1
  68. package/dist/components/mcp/tools/application.js +11 -5
  69. package/dist/components/mcp/tools/application.js.map +1 -1
  70. package/dist/components/mcp/tools/operations.js +9 -0
  71. package/dist/components/mcp/tools/operations.js.map +1 -1
  72. package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -0
  73. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  74. package/dist/components/mcp/tools/schemas/operations.js +9 -0
  75. package/dist/components/mcp/tools/schemas/operations.js.map +1 -1
  76. package/dist/components/operations.js +6 -6
  77. package/dist/components/operations.js.map +1 -1
  78. package/dist/components/operationsValidation.js +34 -2
  79. package/dist/components/operationsValidation.js.map +1 -1
  80. package/dist/components/scopeMount.d.ts +86 -0
  81. package/dist/components/scopeMount.js +131 -0
  82. package/dist/components/scopeMount.js.map +1 -0
  83. package/dist/config/configUtils.js +13 -9
  84. package/dist/config/configUtils.js.map +1 -1
  85. package/dist/dataLayer/backupManifest.d.ts +26 -0
  86. package/dist/dataLayer/backupManifest.js +97 -0
  87. package/dist/dataLayer/backupManifest.js.map +1 -0
  88. package/dist/dataLayer/blobBackup.d.ts +87 -0
  89. package/dist/dataLayer/blobBackup.js +282 -0
  90. package/dist/dataLayer/blobBackup.js.map +1 -0
  91. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +3 -0
  92. package/dist/dataLayer/harperBridge/ResourceBridge.js +45 -5
  93. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  94. package/dist/dataLayer/hdbInfoController.js +4 -0
  95. package/dist/dataLayer/hdbInfoController.js.map +1 -1
  96. package/dist/dataLayer/restoreMarker.d.ts +122 -0
  97. package/dist/dataLayer/restoreMarker.js +261 -0
  98. package/dist/dataLayer/restoreMarker.js.map +1 -0
  99. package/dist/dataLayer/rocksdbBackup.d.ts +127 -0
  100. package/dist/dataLayer/rocksdbBackup.js +1039 -0
  101. package/dist/dataLayer/rocksdbBackup.js.map +1 -0
  102. package/dist/dataLayer/schemaDescribe.js +2 -1
  103. package/dist/dataLayer/schemaDescribe.js.map +1 -1
  104. package/dist/resources/DatabaseTransaction.d.ts +55 -0
  105. package/dist/resources/DatabaseTransaction.js +282 -109
  106. package/dist/resources/DatabaseTransaction.js.map +1 -1
  107. package/dist/resources/ResourceInterface.d.ts +8 -5
  108. package/dist/resources/ResourceInterface.js.map +1 -1
  109. package/dist/resources/Resources.js +22 -4
  110. package/dist/resources/Resources.js.map +1 -1
  111. package/dist/resources/Table.d.ts +6 -5
  112. package/dist/resources/Table.js +114 -37
  113. package/dist/resources/Table.js.map +1 -1
  114. package/dist/resources/analytics/write.js +6 -6
  115. package/dist/resources/analytics/write.js.map +1 -1
  116. package/dist/resources/blob.d.ts +8 -1
  117. package/dist/resources/blob.js +31 -14
  118. package/dist/resources/blob.js.map +1 -1
  119. package/dist/resources/databases.d.ts +59 -1
  120. package/dist/resources/databases.js +386 -41
  121. package/dist/resources/databases.js.map +1 -1
  122. package/dist/resources/jsResource.d.ts +4 -26
  123. package/dist/resources/jsResource.js +5 -59
  124. package/dist/resources/jsResource.js.map +1 -1
  125. package/dist/resources/models/Models.d.ts +11 -1
  126. package/dist/resources/models/Models.js +10 -1
  127. package/dist/resources/models/Models.js.map +1 -1
  128. package/dist/resources/models/backendRegistry.d.ts +9 -0
  129. package/dist/resources/models/backendRegistry.js +10 -0
  130. package/dist/resources/models/backendRegistry.js.map +1 -1
  131. package/dist/resources/models/openaiStream.d.ts +16 -1
  132. package/dist/resources/models/openaiStream.js +113 -21
  133. package/dist/resources/models/openaiStream.js.map +1 -1
  134. package/dist/resources/models/v1/chatCompletions.d.ts +54 -0
  135. package/dist/resources/models/v1/chatCompletions.js +115 -0
  136. package/dist/resources/models/v1/chatCompletions.js.map +1 -0
  137. package/dist/resources/models/v1/embeddings.d.ts +11 -0
  138. package/dist/resources/models/v1/embeddings.js +71 -0
  139. package/dist/resources/models/v1/embeddings.js.map +1 -0
  140. package/dist/resources/models/v1/errors.d.ts +54 -0
  141. package/dist/resources/models/v1/errors.js +130 -0
  142. package/dist/resources/models/v1/errors.js.map +1 -0
  143. package/dist/resources/models/v1/index.d.ts +36 -0
  144. package/dist/resources/models/v1/index.js +75 -0
  145. package/dist/resources/models/v1/index.js.map +1 -0
  146. package/dist/resources/models/v1/models.d.ts +26 -0
  147. package/dist/resources/models/v1/models.js +44 -0
  148. package/dist/resources/models/v1/models.js.map +1 -0
  149. package/dist/resources/models/v1/translation.d.ts +133 -0
  150. package/dist/resources/models/v1/translation.js +298 -0
  151. package/dist/resources/models/v1/translation.js.map +1 -0
  152. package/dist/resources/roles.d.ts +1 -1
  153. package/dist/resources/roles.js +54 -7
  154. package/dist/resources/roles.js.map +1 -1
  155. package/dist/resources/transaction.js +0 -3
  156. package/dist/resources/transaction.js.map +1 -1
  157. package/dist/security/jsLoader.js +84 -33
  158. package/dist/security/jsLoader.js.map +1 -1
  159. package/dist/security/role.js +4 -0
  160. package/dist/security/role.js.map +1 -1
  161. package/dist/security/superUserGuard.d.ts +7 -0
  162. package/dist/security/superUserGuard.js +23 -0
  163. package/dist/security/superUserGuard.js.map +1 -0
  164. package/dist/security/tokenAuthentication.d.ts +0 -1
  165. package/dist/security/tokenAuthentication.js +6 -2
  166. package/dist/security/tokenAuthentication.js.map +1 -1
  167. package/dist/security/user.d.ts +6 -1
  168. package/dist/security/user.js +23 -1
  169. package/dist/security/user.js.map +1 -1
  170. package/dist/server/REST.js +25 -9
  171. package/dist/server/REST.js.map +1 -1
  172. package/dist/server/fastifyRoutes.js +15 -1
  173. package/dist/server/fastifyRoutes.js.map +1 -1
  174. package/dist/server/http.d.ts +23 -2
  175. package/dist/server/http.js +99 -12
  176. package/dist/server/http.js.map +1 -1
  177. package/dist/server/itc/serverHandlers.js +7 -1
  178. package/dist/server/itc/serverHandlers.js.map +1 -1
  179. package/dist/server/jobs/jobProcess.js +20 -1
  180. package/dist/server/jobs/jobProcess.js.map +1 -1
  181. package/dist/server/jobs/jobRunner.js +10 -0
  182. package/dist/server/jobs/jobRunner.js.map +1 -1
  183. package/dist/server/jobs/jobs.js +11 -0
  184. package/dist/server/jobs/jobs.js.map +1 -1
  185. package/dist/server/middlewareChain.d.ts +10 -1
  186. package/dist/server/middlewareChain.js +81 -21
  187. package/dist/server/middlewareChain.js.map +1 -1
  188. package/dist/server/operationsServer.d.ts +0 -2
  189. package/dist/server/operationsServer.js.map +1 -1
  190. package/dist/server/serverHelpers/multipartParser.js +9 -0
  191. package/dist/server/serverHelpers/multipartParser.js.map +1 -1
  192. package/dist/server/serverHelpers/operationAuthorizationState.d.ts +2 -0
  193. package/dist/server/serverHelpers/operationAuthorizationState.js +13 -0
  194. package/dist/server/serverHelpers/operationAuthorizationState.js.map +1 -0
  195. package/dist/server/serverHelpers/registeredOperations.d.ts +3 -2
  196. package/dist/server/serverHelpers/registeredOperations.js +14 -13
  197. package/dist/server/serverHelpers/registeredOperations.js.map +1 -1
  198. package/dist/server/serverHelpers/serverHandlers.js +27 -7
  199. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  200. package/dist/server/serverHelpers/serverUtilities.d.ts +1 -1
  201. package/dist/server/serverHelpers/serverUtilities.js +21 -7
  202. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  203. package/dist/server/static.js +68 -21
  204. package/dist/server/static.js.map +1 -1
  205. package/dist/server/storageReclamation.d.ts +17 -0
  206. package/dist/server/storageReclamation.js +90 -6
  207. package/dist/server/storageReclamation.js.map +1 -1
  208. package/dist/server/threads/socketRouter.js +20 -0
  209. package/dist/server/threads/socketRouter.js.map +1 -1
  210. package/dist/server/threads/threadServer.js +12 -0
  211. package/dist/server/threads/threadServer.js.map +1 -1
  212. package/dist/sqlEngine/diff/differential.js +7 -3
  213. package/dist/sqlEngine/diff/differential.js.map +1 -1
  214. package/dist/sqlTranslator/index.js +6 -1
  215. package/dist/sqlTranslator/index.js.map +1 -1
  216. package/dist/upgrade/upgradePrompt.d.ts +2 -2
  217. package/dist/upgrade/upgradePrompt.js +22 -3
  218. package/dist/upgrade/upgradePrompt.js.map +1 -1
  219. package/dist/utility/OperationFunctionCaller.js +25 -6
  220. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  221. package/dist/utility/errors/commonErrors.d.ts +1 -0
  222. package/dist/utility/errors/commonErrors.js +1 -0
  223. package/dist/utility/errors/commonErrors.js.map +1 -1
  224. package/dist/utility/hdbTerms.d.ts +13 -1
  225. package/dist/utility/hdbTerms.js +13 -1
  226. package/dist/utility/hdbTerms.js.map +1 -1
  227. package/dist/utility/install/installer.js +32 -0
  228. package/dist/utility/install/installer.js.map +1 -1
  229. package/dist/utility/logging/harper_logger.d.ts +47 -0
  230. package/dist/utility/logging/harper_logger.js +803 -38
  231. package/dist/utility/logging/harper_logger.js.map +1 -1
  232. package/dist/utility/operation_authorization.js +13 -3
  233. package/dist/utility/operation_authorization.js.map +1 -1
  234. package/npm-shrinkwrap.json +198 -193
  235. package/package.json +12 -7
  236. package/resources/DESIGN.md +2 -0
  237. package/resources/DatabaseTransaction.ts +310 -104
  238. package/resources/ResourceInterface.ts +8 -5
  239. package/resources/Resources.ts +22 -4
  240. package/resources/Table.ts +341 -263
  241. package/resources/analytics/write.ts +22 -20
  242. package/resources/blob.ts +31 -14
  243. package/resources/databases.ts +387 -46
  244. package/resources/jsResource.ts +5 -62
  245. package/resources/models/Models.ts +14 -1
  246. package/resources/models/backendRegistry.ts +10 -0
  247. package/resources/models/openaiStream.ts +131 -19
  248. package/resources/models/v1/chatCompletions.ts +128 -0
  249. package/resources/models/v1/embeddings.ts +70 -0
  250. package/resources/models/v1/errors.ts +141 -0
  251. package/resources/models/v1/index.ts +72 -0
  252. package/resources/models/v1/models.ts +53 -0
  253. package/resources/models/v1/translation.ts +362 -0
  254. package/resources/roles.ts +67 -7
  255. package/resources/transaction.ts +0 -3
  256. package/security/jsLoader.ts +84 -30
  257. package/security/role.ts +7 -0
  258. package/security/superUserGuard.ts +20 -0
  259. package/security/tokenAuthentication.ts +6 -3
  260. package/security/user.ts +26 -1
  261. package/server/DESIGN.md +61 -34
  262. package/server/REST.ts +25 -9
  263. package/server/fastifyRoutes.ts +20 -1
  264. package/server/http.ts +100 -13
  265. package/server/itc/serverHandlers.js +7 -1
  266. package/server/jobs/jobProcess.ts +18 -1
  267. package/server/jobs/jobRunner.ts +10 -0
  268. package/server/jobs/jobs.ts +11 -0
  269. package/server/middlewareChain.ts +79 -20
  270. package/server/operationsServer.ts +0 -2
  271. package/server/serverHelpers/multipartParser.ts +9 -0
  272. package/server/serverHelpers/operationAuthorizationState.ts +11 -0
  273. package/server/serverHelpers/registeredOperations.ts +19 -15
  274. package/server/serverHelpers/serverHandlers.js +28 -7
  275. package/server/serverHelpers/serverUtilities.ts +29 -7
  276. package/server/static.ts +87 -23
  277. package/server/storageReclamation.ts +104 -8
  278. package/server/threads/socketRouter.ts +20 -0
  279. package/server/threads/threadServer.js +11 -0
  280. package/sqlTranslator/index.ts +6 -1
  281. package/static/defaultConfig.yaml +3 -0
  282. package/studio/web/assets/{Chat-DK3GlWEb.js → Chat-aApwhRmz.js} +2 -2
  283. package/studio/web/assets/{Chat-DK3GlWEb.js.map → Chat-aApwhRmz.js.map} +1 -1
  284. package/studio/web/assets/{FloatingChat-fBcC1Ew_.js → FloatingChat-sC0H91n9.js} +4 -4
  285. package/studio/web/assets/{FloatingChat-fBcC1Ew_.js.map → FloatingChat-sC0H91n9.js.map} +1 -1
  286. package/studio/web/assets/{apiToken-DJo1nakA.js → apiToken-DZ8JhHOI.js} +2 -2
  287. package/studio/web/assets/{apiToken-DJo1nakA.js.map → apiToken-DZ8JhHOI.js.map} +1 -1
  288. package/studio/web/assets/{applications-BDfH8urd.js → applications-9SEVLIO5.js} +2 -2
  289. package/studio/web/assets/{applications-BDfH8urd.js.map → applications-9SEVLIO5.js.map} +1 -1
  290. package/studio/web/assets/{index-BHo3c2Gk.js → index-Dy3uDGXb.js} +6 -6
  291. package/studio/web/assets/index-Dy3uDGXb.js.map +1 -0
  292. package/studio/web/assets/{index.lazy-BTo0y6UM.js → index.lazy-CN1zq4I4.js} +4 -4
  293. package/studio/web/assets/{index.lazy-BTo0y6UM.js.map → index.lazy-CN1zq4I4.js.map} +1 -1
  294. package/studio/web/assets/{notifications-CMxvWNnz.js → notifications-BFAF07xr.js} +2 -2
  295. package/studio/web/assets/{notifications-CMxvWNnz.js.map → notifications-BFAF07xr.js.map} +1 -1
  296. package/studio/web/assets/{notifications-D3GoB26g.js → notifications-CKlYVvVN.js} +2 -2
  297. package/studio/web/assets/{notifications-D3GoB26g.js.map → notifications-CKlYVvVN.js.map} +1 -1
  298. package/studio/web/assets/{profile-Doj5FVDE.js → profile-A1zhEdFG.js} +2 -2
  299. package/studio/web/assets/{profile-Doj5FVDE.js.map → profile-A1zhEdFG.js.map} +1 -1
  300. package/studio/web/assets/{setComponentFile-yinsqJy0.js → setComponentFile-SEtBt_GV.js} +2 -2
  301. package/studio/web/assets/{setComponentFile-yinsqJy0.js.map → setComponentFile-SEtBt_GV.js.map} +1 -1
  302. package/studio/web/assets/{setup-DJwR0BHd.js → setup-BisINqdH.js} +2 -2
  303. package/studio/web/assets/{setup-DJwR0BHd.js.map → setup-BisINqdH.js.map} +1 -1
  304. package/studio/web/assets/{status-Br_AbsJs.js → status-BuQoCc7l.js} +2 -2
  305. package/studio/web/assets/{status-Br_AbsJs.js.map → status-BuQoCc7l.js.map} +1 -1
  306. package/studio/web/assets/{swagger-ui-react-02XH5sVf.js → swagger-ui-react-CAi_s1PC.js} +2 -2
  307. package/studio/web/assets/{swagger-ui-react-02XH5sVf.js.map → swagger-ui-react-CAi_s1PC.js.map} +1 -1
  308. package/studio/web/assets/{tsMode-D1DMKY7h.js → tsMode-DT74tlkM.js} +2 -2
  309. package/studio/web/assets/{tsMode-D1DMKY7h.js.map → tsMode-DT74tlkM.js.map} +1 -1
  310. package/studio/web/assets/{useEntityRestURL-DtRblRgw.js → useEntityRestURL-CGRGc1n7.js} +2 -2
  311. package/studio/web/assets/{useEntityRestURL-DtRblRgw.js.map → useEntityRestURL-CGRGc1n7.js.map} +1 -1
  312. package/studio/web/index.html +1 -1
  313. package/upgrade/upgradePrompt.ts +22 -3
  314. package/utility/OperationFunctionCaller.ts +24 -3
  315. package/utility/errors/commonErrors.ts +2 -0
  316. package/utility/hdbTerms.ts +13 -1
  317. package/utility/install/installer.ts +37 -0
  318. package/utility/logging/harper_logger.ts +786 -41
  319. package/utility/operation_authorization.ts +31 -3
  320. package/studio/web/assets/index-BHo3c2Gk.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EntryHandler.js","sourceRoot":"","sources":["../../components/EntryHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EntryHandler.js","sourceRoot":"","sources":["../../components/EntryHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ type Source = string | Buffer;
2
+ export declare class RuntimeModuleTracker {
3
+ #private;
4
+ constructor(getRoot: () => string | undefined);
5
+ beginDeploy(): void;
6
+ markNativeRuntime(): void;
7
+ recordModule(moduleUrl: string, source: Source): void;
8
+ recordResolution(specifier: string, referrer: string, resolvedUrl: string): void;
9
+ finishDeploy(): Promise<boolean>;
10
+ }
11
+ export {};
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RuntimeModuleTracker = void 0;
4
+ const node_crypto_1 = require("node:crypto");
5
+ const node_fs_1 = require("node:fs");
6
+ const promises_1 = require("node:fs/promises");
7
+ const node_module_1 = require("node:module");
8
+ const node_path_1 = require("node:path");
9
+ const node_url_1 = require("node:url");
10
+ const MODULE_COMPARE_CONCURRENCY = 16;
11
+ const RESOLUTION_EXTENSIONS = ['', '.js', '.json', '.node', '.ts', '.tsx', '.cjs', '.mjs'];
12
+ class RuntimeModuleTracker {
13
+ #getRoot;
14
+ #modules = new Map();
15
+ #resolutions = new Map();
16
+ #nativeRuntime = false;
17
+ #deployInFlight = false;
18
+ #loadedDuringDeploy = false;
19
+ #comparison;
20
+ constructor(getRoot) {
21
+ this.#getRoot = getRoot;
22
+ }
23
+ beginDeploy() {
24
+ if (this.#deployInFlight)
25
+ return;
26
+ this.#deployInFlight = true;
27
+ this.#loadedDuringDeploy = false;
28
+ this.#comparison = undefined;
29
+ }
30
+ markNativeRuntime() {
31
+ this.#nativeRuntime = true;
32
+ if (this.#deployInFlight)
33
+ this.#loadedDuringDeploy = true;
34
+ }
35
+ recordModule(moduleUrl, source) {
36
+ const modulePath = this.#localPath(moduleUrl);
37
+ if (!modulePath)
38
+ return;
39
+ if (!this.#modules.has(modulePath))
40
+ this.#modules.set(modulePath, digest(source));
41
+ if (this.#deployInFlight)
42
+ this.#loadedDuringDeploy = true;
43
+ }
44
+ recordResolution(specifier, referrer, resolvedUrl) {
45
+ const referrerPath = this.#localPath(referrer);
46
+ const resolvedPath = this.#localPath(resolvedUrl);
47
+ if (!referrerPath || !resolvedPath)
48
+ return;
49
+ const key = `${referrerPath}\0${specifier}`;
50
+ if (!this.#resolutions.has(key)) {
51
+ const candidates = higherPriorityResolutionCandidates(specifier, referrerPath, resolvedPath);
52
+ this.#resolutions.set(key, {
53
+ resolvedUrl,
54
+ higherPriorityCandidates: candidates
55
+ ? new Map(candidates.map((candidate) => [candidate, candidateState(candidate)]))
56
+ : undefined,
57
+ });
58
+ if (this.#deployInFlight)
59
+ this.#loadedDuringDeploy = true;
60
+ }
61
+ }
62
+ finishDeploy() {
63
+ if (!this.#deployInFlight)
64
+ return this.#comparison ?? Promise.resolve(false);
65
+ this.#deployInFlight = false;
66
+ this.#comparison = this.#compare();
67
+ return this.#comparison;
68
+ }
69
+ async #compare() {
70
+ if (this.#nativeRuntime || this.#loadedDuringDeploy)
71
+ return true;
72
+ const modules = [...this.#modules];
73
+ for (let start = 0; start < modules.length; start += MODULE_COMPARE_CONCURRENCY) {
74
+ const changed = await Promise.all(modules.slice(start, start + MODULE_COMPARE_CONCURRENCY).map(async ([modulePath, previousDigest]) => {
75
+ try {
76
+ return digest(await (0, promises_1.readFile)(modulePath)) !== previousDigest;
77
+ }
78
+ catch {
79
+ return true;
80
+ }
81
+ }));
82
+ if (changed.includes(true))
83
+ return true;
84
+ }
85
+ for (const [key, resolution] of this.#resolutions) {
86
+ const separator = key.indexOf('\0');
87
+ const referrerPath = key.slice(0, separator);
88
+ const specifier = key.slice(separator + 1);
89
+ if (resolution.higherPriorityCandidates &&
90
+ (await Promise.all([...resolution.higherPriorityCandidates].map(async ([candidate, previousState]) => (await candidateStateAsync(candidate)) !== previousState))).includes(true))
91
+ return true;
92
+ try {
93
+ // Node does not invalidate this cache when a component tree is replaced in place.
94
+ if (!invalidateResolutionCache(specifier, referrerPath, resolution.resolvedUrl))
95
+ return true;
96
+ const resolved = (0, node_module_1.createRequire)((0, node_url_1.pathToFileURL)(referrerPath)).resolve(specifier);
97
+ const resolvedUrl = (0, node_path_1.isAbsolute)(resolved) ? (0, node_url_1.pathToFileURL)(resolved).toString() : resolved;
98
+ if (resolvedUrl !== resolution.resolvedUrl)
99
+ return true;
100
+ }
101
+ catch {
102
+ return true;
103
+ }
104
+ }
105
+ return false;
106
+ }
107
+ #localPath(moduleUrl) {
108
+ if (!moduleUrl.startsWith('file:'))
109
+ return;
110
+ const root = this.#getRoot();
111
+ if (!root)
112
+ return;
113
+ const modulePath = (0, node_url_1.fileURLToPath)(moduleUrl);
114
+ const relativePath = (0, node_path_1.relative)((0, node_path_1.resolve)(root), modulePath);
115
+ if (relativePath === '' ||
116
+ (!relativePath.startsWith(`..${node_path_1.sep}`) && relativePath !== '..' && !(0, node_path_1.isAbsolute)(relativePath)))
117
+ return modulePath;
118
+ }
119
+ }
120
+ exports.RuntimeModuleTracker = RuntimeModuleTracker;
121
+ function higherPriorityResolutionCandidates(specifier, referrerPath, resolvedPath) {
122
+ if (!specifier.startsWith('.'))
123
+ return;
124
+ const basePath = (0, node_path_1.resolve)((0, node_path_1.dirname)(referrerPath), specifier);
125
+ const candidates = [...new Set(RESOLUTION_EXTENSIONS.map((extension) => basePath + extension))];
126
+ candidates.push((0, node_path_1.resolve)(basePath, 'package.json'));
127
+ for (const extension of RESOLUTION_EXTENSIONS.slice(1))
128
+ candidates.push((0, node_path_1.resolve)(basePath, `index${extension}`));
129
+ const resolvedIndex = candidates.indexOf(resolvedPath);
130
+ if (resolvedIndex === -1)
131
+ return;
132
+ return candidates.slice(0, resolvedIndex);
133
+ }
134
+ function candidateState(path) {
135
+ try {
136
+ const stats = (0, node_fs_1.lstatSync)(path);
137
+ if (stats.isSymbolicLink())
138
+ return `link:${(0, node_fs_1.readlinkSync)(path)}`;
139
+ if (stats.isDirectory())
140
+ return 'directory';
141
+ if (!stats.isFile())
142
+ return 'other';
143
+ return path.endsWith('package.json') ? `file:${digest((0, node_fs_1.readFileSync)(path))}` : 'file';
144
+ }
145
+ catch (error) {
146
+ if (error.code === 'ENOENT')
147
+ return 'missing';
148
+ return `error:${error.code ?? 'unknown'}`;
149
+ }
150
+ }
151
+ async function candidateStateAsync(path) {
152
+ try {
153
+ const stats = await (0, promises_1.lstat)(path);
154
+ if (stats.isSymbolicLink())
155
+ return `link:${await (0, promises_1.readlink)(path)}`;
156
+ if (stats.isDirectory())
157
+ return 'directory';
158
+ if (!stats.isFile())
159
+ return 'other';
160
+ return path.endsWith('package.json') ? `file:${digest(await (0, promises_1.readFile)(path))}` : 'file';
161
+ }
162
+ catch (error) {
163
+ if (error.code === 'ENOENT')
164
+ return 'missing';
165
+ return `error:${error.code ?? 'unknown'}`;
166
+ }
167
+ }
168
+ function invalidateResolutionCache(specifier, referrerPath, previousResolvedUrl) {
169
+ const pathCache = node_module_1.Module._pathCache;
170
+ if (!pathCache)
171
+ return false;
172
+ const previousPath = previousResolvedUrl.startsWith('file:')
173
+ ? (0, node_url_1.fileURLToPath)(previousResolvedUrl)
174
+ : previousResolvedUrl;
175
+ const relativeKey = `${specifier}\0${(0, node_path_1.dirname)(referrerPath)}`;
176
+ if (pathCache[relativeKey] === previousPath)
177
+ delete pathCache[relativeKey];
178
+ if (specifier.startsWith('.'))
179
+ return true;
180
+ for (const cacheKey of Object.keys(pathCache)) {
181
+ if (cacheKey.startsWith(`${specifier}\0`) && pathCache[cacheKey] === previousPath)
182
+ delete pathCache[cacheKey];
183
+ }
184
+ return true;
185
+ }
186
+ function digest(source) {
187
+ return (0, node_crypto_1.createHash)('sha256').update(source).digest('base64');
188
+ }
189
+ //# sourceMappingURL=RuntimeModuleTracker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RuntimeModuleTracker.js","sourceRoot":"","sources":["../../components/RuntimeModuleTracker.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import { type Resources } from '../resources/Resources.ts';
8
8
  import { Models } from '../resources/models/Models.ts';
9
9
  import type { FileAndURLPathConfig } from './Component.ts';
10
10
  import { FilesOption } from './deriveGlobOptions.ts';
11
+ import { type ScopeMount } from './scopeMount.ts';
11
12
  import { ApplicationScope } from './ApplicationScope.ts';
12
13
  import type { SecretsView } from './componentSecrets.ts';
13
14
  export declare class MissingDefaultFilesOptionError extends Error {
@@ -39,7 +40,18 @@ export declare class Scope extends EventEmitter<ScopeEventsMap> {
39
40
  databaseEvents: typeof databaseEventsEmitter;
40
41
  models: Models;
41
42
  isTransientValidation?: boolean;
42
- constructor(appName: string, pluginName: string, directory: string, configFilePath: string, applicationScope: ApplicationScope, origin?: string, isRootConfig?: boolean);
43
+ /**
44
+ * Routing the operator declared for this application in the root config. Applied automatically
45
+ * to handlers registered through `scope.server`, so plugins normally don't touch it — the
46
+ * router strips the mount before a handler runs and everything inside the application
47
+ * addresses itself mount-relative.
48
+ *
49
+ * Read it only when a plugin emits an absolute URL back to the client (e.g. a redirect
50
+ * `Location`, via `externalBasePath()`) or bypasses the routed chain entirely (legacy
51
+ * fastify routes register on the bare server).
52
+ */
53
+ mount?: ScopeMount;
54
+ constructor(appName: string, pluginName: string, directory: string, configFilePath: string, applicationScope: ApplicationScope, origin?: string, isRootConfig?: boolean, mount?: ScopeMount);
43
55
  get logger(): Logger;
44
56
  /**
45
57
  * The application's secrets view (#1550): hdb_secret rows granted to this application plus its
@@ -52,6 +64,30 @@ export declare class Scope extends EventEmitter<ScopeEventsMap> {
52
64
  get secrets(): SecretsView;
53
65
  get appName(): string;
54
66
  get pluginName(): string;
67
+ /**
68
+ * Turns a mount-relative base path into the absolute path a client sees, by prefixing the
69
+ * application's mount. Use it for anything sent back to the client — a redirect `Location`, a
70
+ * generated link — since the router strips the mount before a handler runs and a handler's own
71
+ * view of the path therefore excludes it.
72
+ */
73
+ externalBasePath(baseURLPath: string): string;
74
+ /**
75
+ * The route a handler registered through `scope.server` with these options will answer on — the
76
+ * single place the application mount is applied. `scope.server` uses it, and a plugin that must
77
+ * identify its own route (e.g. REST deduplicating registration per mount) calls it rather than
78
+ * recomposing the parts, so there is one definition of "which route is this".
79
+ *
80
+ * An explicit call option wins over config, but either way `urlPath` is *resolved* rather than
81
+ * passed through: plugins that spread their whole config section into these options (REST does)
82
+ * would otherwise hand the router a raw value — './' became the literal, unmatchable route '/.'.
83
+ */
84
+ routeFor(options?: {
85
+ urlPath?: string;
86
+ host?: string;
87
+ }): {
88
+ host?: string;
89
+ urlPath?: string;
90
+ };
55
91
  get directory(): string;
56
92
  get configFilePath(): string;
57
93
  ensureTable<TableResourceType = unknown>(options: any): TableResourceType;
@@ -66,6 +102,7 @@ export declare class Scope extends EventEmitter<ScopeEventsMap> {
66
102
  * Called by the component loader after handleApplication completes.
67
103
  */
68
104
  waitForInitialLoads(): Promise<void>;
105
+ waitForDeployCompletion(timeoutMs?: number): Promise<void>;
69
106
  /**
70
107
  * Import a file into the scope's sandbox.
71
108
  * @param filePath - The path of the file to import.
@@ -19,6 +19,7 @@ const Resources_ts_1 = require("../resources/Resources.js");
19
19
  const Models_ts_1 = require("../resources/models/Models.js");
20
20
  const requestRestart_ts_1 = require("./requestRestart.js");
21
21
  const resolveBaseURLPath_ts_1 = require("./resolveBaseURLPath.js");
22
+ const scopeMount_ts_1 = require("./scopeMount.js");
22
23
  const componentSecrets_ts_1 = require("./componentSecrets.js");
23
24
  const deployLifecycle_ts_1 = require("./deployLifecycle.js");
24
25
  class MissingDefaultFilesOptionError extends Error {
@@ -48,11 +49,8 @@ class Scope extends node_events_1.EventEmitter {
48
49
  #pendingInitialLoads;
49
50
  #deployStartHandler;
50
51
  #deployEndHandler;
51
- // While a deploy of this component is in flight, EntryHandler events do not
52
- // drive requestRestart() — the deploy itself produces hundreds of file
53
- // changes that would otherwise pile up. A single coalesced restart is
54
- // triggered by the post-deploy re-scan instead.
55
52
  #deployInFlight = false;
53
+ #restartRequestedDuringDeploy = false;
56
54
  applicationScope;
57
55
  options;
58
56
  resources;
@@ -64,14 +62,27 @@ class Scope extends node_events_1.EventEmitter {
64
62
  // the scope exists to validate a component, not to run it. Plugins with
65
63
  // process-global side effects should validate fully but skip activation.
66
64
  isTransientValidation;
67
- constructor(appName, pluginName, directory, configFilePath, applicationScope, origin = appName, isRootConfig) {
65
+ /**
66
+ * Routing the operator declared for this application in the root config. Applied automatically
67
+ * to handlers registered through `scope.server`, so plugins normally don't touch it — the
68
+ * router strips the mount before a handler runs and everything inside the application
69
+ * addresses itself mount-relative.
70
+ *
71
+ * Read it only when a plugin emits an absolute URL back to the client (e.g. a redirect
72
+ * `Location`, via `externalBasePath()`) or bypasses the routed chain entirely (legacy
73
+ * fastify routes register on the bare server).
74
+ */
75
+ mount;
76
+ constructor(appName, pluginName, directory, configFilePath, applicationScope, origin = appName, isRootConfig, mount) {
68
77
  super();
78
+ this.mount = mount;
69
79
  this.#appName = appName;
70
80
  this.#pluginName = pluginName;
71
81
  this.#origin = typeof origin === 'string' ? origin : appName;
72
82
  this.#directory = directory;
73
83
  this.#configFilePath = configFilePath;
74
84
  this.#logger = (0, harper_logger_ts_1.loggerWithTag)(this.#appName);
85
+ this.#deployInFlight = deployLifecycle_ts_1.deployLifecycle.isDeployInFlight(this.#appName);
75
86
  this.databaseEvents = databases_ts_1.databaseEventsEmitter;
76
87
  this.applicationScope = applicationScope;
77
88
  // Hold this identity's live secret subscriptions (#1776) for as long as this Scope is open, so a
@@ -89,14 +100,10 @@ class Scope extends node_events_1.EventEmitter {
89
100
  const method = Reflect.get(target, prop, receiver);
90
101
  if (typeof method === 'function') {
91
102
  return (listener, options) => {
92
- const scopeConfig = scopeRef.options?.getAll() ?? {};
93
103
  return method.call(target, listener, {
94
104
  name: pluginName,
95
- // resolve to the same base the entry pipeline uses ('assets' -> '/assets/',
96
- // './x' -> '/<name>/x/') so route matching sees a real pathname prefix (#1583)
97
- urlPath: scopeConfig.urlPath ? (0, resolveBaseURLPath_ts_1.resolveBaseURLPath)(pluginName, scopeConfig.urlPath) : undefined,
98
- host: scopeConfig.host || undefined,
99
105
  ...options,
106
+ ...scopeRef.routeFor(options),
100
107
  });
101
108
  };
102
109
  }
@@ -114,6 +121,7 @@ class Scope extends node_events_1.EventEmitter {
114
121
  this.options = new OptionsWatcher_ts_1.OptionsWatcher(pluginName, configFilePath, this.#logger, isRootConfig)
115
122
  .on('error', this.#handleError.bind(this))
116
123
  .on('change', this.#optionsWatcherChangeListener.bind(this)())
124
+ .on('remove', this.#optionsWatcherRemoveListener())
117
125
  .on('ready', this.#handleOptionsWatcherReady.bind(this));
118
126
  // Bridge cross-thread deploy lifecycle events for this component. The
119
127
  // handlers live on the scope for the lifetime of the scope and are torn
@@ -149,6 +157,39 @@ class Scope extends node_events_1.EventEmitter {
149
157
  get pluginName() {
150
158
  return this.#pluginName;
151
159
  }
160
+ /**
161
+ * Turns a mount-relative base path into the absolute path a client sees, by prefixing the
162
+ * application's mount. Use it for anything sent back to the client — a redirect `Location`, a
163
+ * generated link — since the router strips the mount before a handler runs and a handler's own
164
+ * view of the path therefore excludes it.
165
+ */
166
+ externalBasePath(baseURLPath) {
167
+ return this.mount?.urlPath ? `${this.mount.urlPath}${baseURLPath}` : baseURLPath;
168
+ }
169
+ /**
170
+ * The route a handler registered through `scope.server` with these options will answer on — the
171
+ * single place the application mount is applied. `scope.server` uses it, and a plugin that must
172
+ * identify its own route (e.g. REST deduplicating registration per mount) calls it rather than
173
+ * recomposing the parts, so there is one definition of "which route is this".
174
+ *
175
+ * An explicit call option wins over config, but either way `urlPath` is *resolved* rather than
176
+ * passed through: plugins that spread their whole config section into these options (REST does)
177
+ * would otherwise hand the router a raw value — './' became the literal, unmatchable route '/.'.
178
+ */
179
+ routeFor(options) {
180
+ const scopeConfig = this.options?.getAll() ?? {};
181
+ const rawUrlPath = options?.urlPath ?? scopeConfig.urlPath;
182
+ // resolve to the same base the entry pipeline uses ('assets' -> '/assets/', './x' ->
183
+ // '/<name>/x/') so route matching sees a real pathname prefix (#1583), then prefix the
184
+ // application's mount. The mount is applied ONLY here, at the routing boundary: the router
185
+ // strips it before the handler runs, so entry URL paths — and the resource paths
186
+ // graphqlSchema/jsResource derive from them — stay mount-relative.
187
+ const pluginUrlPath = rawUrlPath ? (0, resolveBaseURLPath_ts_1.resolveBaseURLPath)(this.#pluginName, rawUrlPath) : undefined;
188
+ return {
189
+ host: this.mount?.host || options?.host || scopeConfig.host || undefined,
190
+ urlPath: (0, scopeMount_ts_1.composeMountedUrlPath)(this.mount?.urlPath, this.#pluginName, pluginUrlPath) || undefined,
191
+ };
192
+ }
152
193
  get directory() {
153
194
  return this.#directory;
154
195
  }
@@ -168,7 +209,10 @@ class Scope extends node_events_1.EventEmitter {
168
209
  this.emit('ready');
169
210
  }
170
211
  #handleError(error) {
171
- this.emit('error', error);
212
+ if (this.listenerCount('error') > 0)
213
+ this.emit('error', error);
214
+ else
215
+ this.#logger.error?.('Error in component scope:', error);
172
216
  }
173
217
  async close() {
174
218
  deployLifecycle_ts_1.deployLifecycle.off('deploy:start', this.#deployStartHandler);
@@ -207,6 +251,8 @@ class Scope extends node_events_1.EventEmitter {
207
251
  }
208
252
  #onDeployStart(componentName) {
209
253
  this.#deployInFlight = true;
254
+ this.#restartRequestedDuringDeploy = false;
255
+ this.applicationScope?.beginDeploy();
210
256
  // Pause each EntryHandler so it stops emitting events for the
211
257
  // intermediate filesystem state the deploy is writing, and so it
212
258
  // releases its inotify handles while npm install is unpacking
@@ -219,22 +265,26 @@ class Scope extends node_events_1.EventEmitter {
219
265
  }
220
266
  #onDeployEnd(componentName) {
221
267
  this.#deployInFlight = false;
222
- // Resume each EntryHandler BEFORE notifying plugins. Otherwise a plugin
223
- // throwing in its deploy:end handler would abort this function and
224
- // leave the watchers permanently paused (surfaced by Gemini review).
225
- // The fresh chokidar watcher does an initial scan and emits add events
226
- // for the post-deploy tree; the existing per-event listener calls
227
- // scope.requestRestart() for each, and the restart debounce in
228
- // componentLoader collapses them into a single restart cycle. Plugin
229
- // handlers stay attached across the pause.
268
+ const restartRequestedDuringDeploy = this.#restartRequestedDuringDeploy;
269
+ this.#restartRequestedDuringDeploy = false;
270
+ // Resume before notifying plugins so a throwing deploy:end listener cannot strand the watchers.
230
271
  for (const entryHandler of this.#entryHandlers) {
231
- void entryHandler.resume();
272
+ void entryHandler.resume().catch(() => { });
232
273
  }
274
+ if (restartRequestedDuringDeploy)
275
+ this.requestRestart();
276
+ void this.applicationScope
277
+ ?.finishDeploy()
278
+ .then((runtimeChanged) => {
279
+ if (runtimeChanged)
280
+ this.requestRestart();
281
+ })
282
+ .catch((error) => {
283
+ this.#logger.error?.(`Could not verify the loaded runtime after deploying ${this.#appName}:`, error);
284
+ this.requestRestart();
285
+ });
233
286
  this.#safeEmit('deploy:end', componentName);
234
287
  }
235
- // Swallow and log listener exceptions so one buggy plugin can't stop us
236
- // from running the rest of the deploy-lifecycle bookkeeping. EventEmitter
237
- // by default rethrows from synchronous listeners.
238
288
  #safeEmit(event, componentName) {
239
289
  try {
240
290
  this.emit(event, componentName);
@@ -251,6 +301,8 @@ class Scope extends node_events_1.EventEmitter {
251
301
  .on('unlink', this.#defaultEntryHandlerListener('unlink'))
252
302
  .on('addDir', this.#defaultEntryHandlerListener('addDir'))
253
303
  .on('unlinkDir', this.#defaultEntryHandlerListener('unlinkDir'));
304
+ if (this.#deployInFlight)
305
+ entryHandler.pause();
254
306
  this.#entryHandlers.push(entryHandler);
255
307
  return entryHandler;
256
308
  }
@@ -283,8 +335,7 @@ class Scope extends node_events_1.EventEmitter {
283
335
  if (!scope.#entryHandler) {
284
336
  return;
285
337
  }
286
- // Otherwise, if an entry handler exists, update it with the new config
287
- scope.#entryHandler.update(config);
338
+ void scope.#entryHandler.update(config).catch(() => { });
288
339
  return;
289
340
  }
290
341
  // If the user isn't handling option changes, request a restart
@@ -295,6 +346,22 @@ class Scope extends node_events_1.EventEmitter {
295
346
  scope.requestRestart();
296
347
  };
297
348
  }
349
+ #optionsWatcherRemoveListener() {
350
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
351
+ const scope = this;
352
+ // Deleting a component's config block emits `remove` (not `change`), so without
353
+ // this listener a running component keeps serving until some unrelated restart —
354
+ // even though absence is the canonical disabled state for opt-in built-ins like
355
+ // the /v1 models gateway. Mirrors the change listener: a plugin that registers
356
+ // its own `remove` handler owns the response and no restart is requested.
357
+ return function handleOptionsWatcherRemove() {
358
+ if (this.listenerCount('remove') > 1) {
359
+ return;
360
+ }
361
+ scope.#logger.debug?.('Options removed, requesting restart');
362
+ scope.requestRestart();
363
+ };
364
+ }
298
365
  #getFilesOption() {
299
366
  const config = this.options.getAll();
300
367
  if (config &&
@@ -391,9 +458,7 @@ class Scope extends node_events_1.EventEmitter {
391
458
  }
392
459
  requestRestart() {
393
460
  if (this.#deployInFlight) {
394
- // Suppressed: a deploy is rewriting this component's files. The
395
- // post-deploy re-scan in #onDeployEnd will trigger the coalesced
396
- // restart instead.
461
+ this.#restartRequestedDuringDeploy = true;
397
462
  this.#logger.debug?.(`Restart suppressed (deploy in flight) for ${this.#appName}`);
398
463
  return;
399
464
  }
@@ -410,6 +475,30 @@ class Scope extends node_events_1.EventEmitter {
410
475
  await Promise.all(this.#pendingInitialLoads);
411
476
  }
412
477
  }
478
+ waitForDeployCompletion(timeoutMs = 6 * 60 * 60 * 1000) {
479
+ if (!this.#deployInFlight)
480
+ return Promise.resolve();
481
+ return new Promise((resolve, reject) => {
482
+ const timer = setTimeout(() => {
483
+ deployLifecycle_ts_1.deployLifecycle.off('deploy:end', handleDeployEnd);
484
+ reject(new Error(`Timed out waiting for deployment of ${this.#appName} to complete`));
485
+ }, timeoutMs);
486
+ timer.unref?.();
487
+ const handleDeployEnd = (componentName) => {
488
+ if (componentName !== this.#appName || this.#deployInFlight)
489
+ return;
490
+ deployLifecycle_ts_1.deployLifecycle.off('deploy:end', handleDeployEnd);
491
+ clearTimeout(timer);
492
+ resolve();
493
+ };
494
+ deployLifecycle_ts_1.deployLifecycle.on('deploy:end', handleDeployEnd);
495
+ if (!this.#deployInFlight) {
496
+ deployLifecycle_ts_1.deployLifecycle.off('deploy:end', handleDeployEnd);
497
+ clearTimeout(timer);
498
+ resolve();
499
+ }
500
+ });
501
+ }
413
502
  /**
414
503
  * Import a file into the scope's sandbox.
415
504
  * @param filePath - The path of the file to import.