@harperfast/harper 5.2.0-beta.4 → 5.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (169) hide show
  1. package/bin/backup.ts +169 -0
  2. package/bin/cliOperations.ts +92 -73
  3. package/bin/harper.ts +25 -6
  4. package/components/Scope.ts +52 -6
  5. package/components/componentLoader.ts +107 -9
  6. package/components/mcp/toolRegistry.ts +10 -0
  7. package/components/mcp/tools/application.ts +12 -5
  8. package/components/mcp/tools/operations.ts +3 -0
  9. package/components/mcp/tools/schemas/operationDescriptions.ts +3 -0
  10. package/components/mcp/tools/schemas/operations.ts +9 -0
  11. package/components/operations.js +1 -0
  12. package/components/operationsValidation.js +32 -2
  13. package/components/scopeMount.ts +150 -0
  14. package/config-root.schema.json +4 -0
  15. package/dataLayer/backupManifest.ts +102 -0
  16. package/dataLayer/blobBackup.ts +286 -0
  17. package/dataLayer/harperBridge/ResourceBridge.ts +43 -0
  18. package/dataLayer/restoreMarker.ts +276 -0
  19. package/dataLayer/rocksdbBackup.ts +1100 -0
  20. package/dist/bin/backup.d.ts +9 -0
  21. package/dist/bin/backup.js +192 -0
  22. package/dist/bin/backup.js.map +1 -0
  23. package/dist/bin/cliOperations.d.ts +13 -0
  24. package/dist/bin/cliOperations.js +89 -70
  25. package/dist/bin/cliOperations.js.map +1 -1
  26. package/dist/bin/harper.d.ts +7 -0
  27. package/dist/bin/harper.js +27 -6
  28. package/dist/bin/harper.js.map +1 -1
  29. package/dist/components/Scope.d.ts +37 -1
  30. package/dist/components/Scope.js +48 -6
  31. package/dist/components/Scope.js.map +1 -1
  32. package/dist/components/componentLoader.d.ts +2 -6
  33. package/dist/components/componentLoader.js +91 -8
  34. package/dist/components/componentLoader.js.map +1 -1
  35. package/dist/components/mcp/toolRegistry.d.ts +7 -0
  36. package/dist/components/mcp/toolRegistry.js +10 -0
  37. package/dist/components/mcp/toolRegistry.js.map +1 -1
  38. package/dist/components/mcp/tools/application.js +11 -5
  39. package/dist/components/mcp/tools/application.js.map +1 -1
  40. package/dist/components/mcp/tools/operations.js +3 -0
  41. package/dist/components/mcp/tools/operations.js.map +1 -1
  42. package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -0
  43. package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
  44. package/dist/components/mcp/tools/schemas/operations.js +9 -0
  45. package/dist/components/mcp/tools/schemas/operations.js.map +1 -1
  46. package/dist/components/operations.js +2 -0
  47. package/dist/components/operations.js.map +1 -1
  48. package/dist/components/operationsValidation.js +34 -2
  49. package/dist/components/operationsValidation.js.map +1 -1
  50. package/dist/components/scopeMount.d.ts +86 -0
  51. package/dist/components/scopeMount.js +131 -0
  52. package/dist/components/scopeMount.js.map +1 -0
  53. package/dist/dataLayer/backupManifest.d.ts +26 -0
  54. package/dist/dataLayer/backupManifest.js +97 -0
  55. package/dist/dataLayer/backupManifest.js.map +1 -0
  56. package/dist/dataLayer/blobBackup.d.ts +87 -0
  57. package/dist/dataLayer/blobBackup.js +282 -0
  58. package/dist/dataLayer/blobBackup.js.map +1 -0
  59. package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +3 -0
  60. package/dist/dataLayer/harperBridge/ResourceBridge.js +33 -0
  61. package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
  62. package/dist/dataLayer/restoreMarker.d.ts +122 -0
  63. package/dist/dataLayer/restoreMarker.js +261 -0
  64. package/dist/dataLayer/restoreMarker.js.map +1 -0
  65. package/dist/dataLayer/rocksdbBackup.d.ts +127 -0
  66. package/dist/dataLayer/rocksdbBackup.js +1039 -0
  67. package/dist/dataLayer/rocksdbBackup.js.map +1 -0
  68. package/dist/resources/DatabaseTransaction.js +0 -6
  69. package/dist/resources/DatabaseTransaction.js.map +1 -1
  70. package/dist/resources/ResourceInterface.d.ts +0 -3
  71. package/dist/resources/ResourceInterface.js.map +1 -1
  72. package/dist/resources/Table.js +22 -22
  73. package/dist/resources/Table.js.map +1 -1
  74. package/dist/resources/blob.d.ts +8 -0
  75. package/dist/resources/blob.js +16 -7
  76. package/dist/resources/blob.js.map +1 -1
  77. package/dist/resources/databases.d.ts +42 -1
  78. package/dist/resources/databases.js +276 -40
  79. package/dist/resources/databases.js.map +1 -1
  80. package/dist/resources/transaction.js +0 -3
  81. package/dist/resources/transaction.js.map +1 -1
  82. package/dist/server/REST.js +25 -9
  83. package/dist/server/REST.js.map +1 -1
  84. package/dist/server/fastifyRoutes.js +15 -1
  85. package/dist/server/fastifyRoutes.js.map +1 -1
  86. package/dist/server/itc/serverHandlers.js +7 -1
  87. package/dist/server/itc/serverHandlers.js.map +1 -1
  88. package/dist/server/jobs/jobProcess.js +20 -1
  89. package/dist/server/jobs/jobProcess.js.map +1 -1
  90. package/dist/server/jobs/jobRunner.js +10 -0
  91. package/dist/server/jobs/jobRunner.js.map +1 -1
  92. package/dist/server/jobs/jobs.js +11 -0
  93. package/dist/server/jobs/jobs.js.map +1 -1
  94. package/dist/server/middlewareChain.d.ts +10 -1
  95. package/dist/server/middlewareChain.js +81 -21
  96. package/dist/server/middlewareChain.js.map +1 -1
  97. package/dist/server/serverHelpers/serverHandlers.js +8 -4
  98. package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
  99. package/dist/server/serverHelpers/serverUtilities.js +11 -0
  100. package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
  101. package/dist/server/static.js +11 -3
  102. package/dist/server/static.js.map +1 -1
  103. package/dist/utility/OperationFunctionCaller.js +25 -6
  104. package/dist/utility/OperationFunctionCaller.js.map +1 -1
  105. package/dist/utility/hdbTerms.d.ts +11 -1
  106. package/dist/utility/hdbTerms.js +11 -1
  107. package/dist/utility/hdbTerms.js.map +1 -1
  108. package/dist/utility/logging/harper_logger.d.ts +40 -0
  109. package/dist/utility/logging/harper_logger.js +746 -14
  110. package/dist/utility/logging/harper_logger.js.map +1 -1
  111. package/dist/utility/operation_authorization.js +13 -3
  112. package/dist/utility/operation_authorization.js.map +1 -1
  113. package/npm-shrinkwrap.json +3 -2
  114. package/package.json +4 -1
  115. package/resources/DESIGN.md +2 -0
  116. package/resources/DatabaseTransaction.ts +0 -3
  117. package/resources/ResourceInterface.ts +0 -3
  118. package/resources/Table.ts +20 -20
  119. package/resources/blob.ts +16 -6
  120. package/resources/databases.ts +272 -42
  121. package/resources/transaction.ts +0 -3
  122. package/server/DESIGN.md +16 -0
  123. package/server/REST.ts +25 -9
  124. package/server/fastifyRoutes.ts +20 -1
  125. package/server/itc/serverHandlers.js +7 -1
  126. package/server/jobs/jobProcess.ts +18 -1
  127. package/server/jobs/jobRunner.ts +10 -0
  128. package/server/jobs/jobs.ts +11 -0
  129. package/server/middlewareChain.ts +79 -20
  130. package/server/serverHelpers/serverHandlers.js +8 -4
  131. package/server/serverHelpers/serverUtilities.ts +19 -0
  132. package/server/static.ts +12 -3
  133. package/static/defaultConfig.yaml +1 -0
  134. package/studio/web/assets/{Chat-DK3GlWEb.js → Chat-DoVWScmq.js} +2 -2
  135. package/studio/web/assets/{Chat-DK3GlWEb.js.map → Chat-DoVWScmq.js.map} +1 -1
  136. package/studio/web/assets/{FloatingChat-fBcC1Ew_.js → FloatingChat-UZ2NsUOZ.js} +4 -4
  137. package/studio/web/assets/{FloatingChat-fBcC1Ew_.js.map → FloatingChat-UZ2NsUOZ.js.map} +1 -1
  138. package/studio/web/assets/{apiToken-DJo1nakA.js → apiToken-BUI_04o7.js} +2 -2
  139. package/studio/web/assets/{apiToken-DJo1nakA.js.map → apiToken-BUI_04o7.js.map} +1 -1
  140. package/studio/web/assets/{applications-BDfH8urd.js → applications-D03NA7wW.js} +2 -2
  141. package/studio/web/assets/{applications-BDfH8urd.js.map → applications-D03NA7wW.js.map} +1 -1
  142. package/studio/web/assets/{index-BHo3c2Gk.js → index-Bh_CNAHr.js} +6 -6
  143. package/studio/web/assets/index-Bh_CNAHr.js.map +1 -0
  144. package/studio/web/assets/{index.lazy-BTo0y6UM.js → index.lazy-Dx3MpyDC.js} +4 -4
  145. package/studio/web/assets/{index.lazy-BTo0y6UM.js.map → index.lazy-Dx3MpyDC.js.map} +1 -1
  146. package/studio/web/assets/{notifications-CMxvWNnz.js → notifications-0edoFTsb.js} +2 -2
  147. package/studio/web/assets/{notifications-CMxvWNnz.js.map → notifications-0edoFTsb.js.map} +1 -1
  148. package/studio/web/assets/{notifications-D3GoB26g.js → notifications-CwKhipK7.js} +2 -2
  149. package/studio/web/assets/{notifications-D3GoB26g.js.map → notifications-CwKhipK7.js.map} +1 -1
  150. package/studio/web/assets/{profile-Doj5FVDE.js → profile-DUfEPQtx.js} +2 -2
  151. package/studio/web/assets/{profile-Doj5FVDE.js.map → profile-DUfEPQtx.js.map} +1 -1
  152. package/studio/web/assets/{setComponentFile-yinsqJy0.js → setComponentFile-DMPo4UjC.js} +2 -2
  153. package/studio/web/assets/{setComponentFile-yinsqJy0.js.map → setComponentFile-DMPo4UjC.js.map} +1 -1
  154. package/studio/web/assets/{setup-DJwR0BHd.js → setup-B56Oz1_u.js} +2 -2
  155. package/studio/web/assets/{setup-DJwR0BHd.js.map → setup-B56Oz1_u.js.map} +1 -1
  156. package/studio/web/assets/{status-Br_AbsJs.js → status-BAod7p3o.js} +2 -2
  157. package/studio/web/assets/{status-Br_AbsJs.js.map → status-BAod7p3o.js.map} +1 -1
  158. package/studio/web/assets/{swagger-ui-react-02XH5sVf.js → swagger-ui-react-lQrBxfwM.js} +2 -2
  159. package/studio/web/assets/{swagger-ui-react-02XH5sVf.js.map → swagger-ui-react-lQrBxfwM.js.map} +1 -1
  160. package/studio/web/assets/{tsMode-D1DMKY7h.js → tsMode-CrHCRjTK.js} +2 -2
  161. package/studio/web/assets/{tsMode-D1DMKY7h.js.map → tsMode-CrHCRjTK.js.map} +1 -1
  162. package/studio/web/assets/{useEntityRestURL-DtRblRgw.js → useEntityRestURL-DoaBMEvU.js} +2 -2
  163. package/studio/web/assets/{useEntityRestURL-DtRblRgw.js.map → useEntityRestURL-DoaBMEvU.js.map} +1 -1
  164. package/studio/web/index.html +1 -1
  165. package/utility/OperationFunctionCaller.ts +24 -3
  166. package/utility/hdbTerms.ts +11 -1
  167. package/utility/logging/harper_logger.ts +729 -15
  168. package/utility/operation_authorization.ts +31 -3
  169. package/studio/web/assets/index-BHo3c2Gk.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"operationsValidation.js","sourceRoot":"","sources":["../../components/operationsValidation.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"operationsValidation.js","sourceRoot":"","sources":["../../components/operationsValidation.js"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ /**
2
+ * The routing an operator declared for an application in the *root* config, e.g.
3
+ *
4
+ * ```yaml
5
+ * my-app:
6
+ * package: '@my/app'
7
+ * host: api.example.com
8
+ * urlPath: /v1
9
+ * ```
10
+ *
11
+ * Where an application is served is a deployment concern, not an application concern, so
12
+ * the root config is authoritative: a checked-in `config.yaml` cannot pin the hostname or
13
+ * mount point an operator has chosen. The mount reaches every plugin scope loaded for that
14
+ * application (and, transitively, plugins the application itself declares).
15
+ *
16
+ * The mount is applied at exactly one place: the routing boundary, where `Scope`'s `server`
17
+ * proxy registers a handler. The router strips it before the handler runs, so everything
18
+ * inside the application — entry URL paths, and the resource paths `graphqlSchema` and
19
+ * `jsResource` derive from them — stays mount-relative. Only code that emits an absolute URL
20
+ * back to the client (`Scope.externalBasePath`) or bypasses the routed chain (legacy fastify
21
+ * routes) needs to know the mount exists.
22
+ */
23
+ export interface ScopeMount {
24
+ host?: string;
25
+ urlPath?: string;
26
+ }
27
+ export declare class InvalidMountPathError extends Error {
28
+ constructor(urlPath: string);
29
+ }
30
+ export declare class InvalidMountHostError extends Error {
31
+ constructor(host: string);
32
+ }
33
+ /**
34
+ * Normalizes a mount prefix to a leading-slash, no-trailing-slash form ('/v1'), or
35
+ * undefined when it constrains nothing ('', '/', undefined) — matching
36
+ * `middlewareChain.normalizeUrlPath`, so a mount that means "the root" composes to
37
+ * exactly the plugin's own path rather than rewriting it.
38
+ *
39
+ * Dot segments are rejected rather than resolved. A plugin's `urlPath` may be plugin-name
40
+ * relative ('./x'), but a mount has no such base, and WHATWG clients strip '.' segments
41
+ * before sending the request — a '/.'-prefixed route would simply be unreachable.
42
+ */
43
+ export declare function normalizeMountPath(urlPath: string | undefined): string | undefined;
44
+ /**
45
+ * Hostnames are case-insensitive (RFC 4343) and clients send them lowercased, so a mount is
46
+ * held lowercased and compared that way. The bracket form of an IPv6 literal is unwrapped to
47
+ * match what the router extracts from the Host header.
48
+ *
49
+ * Validated against the same grammar as the `deploy_component` operation's `host` field (a bare
50
+ * DNS hostname or IPv6 literal) — the root config is hand-edited YAML with no equivalent gate,
51
+ * so a value that would never match a Host header (a port, a scheme, a path suffix, malformed
52
+ * IDN) must be rejected here rather than silently mounting the application unreachably.
53
+ */
54
+ export declare function normalizeMountHost(host: string | undefined): string | undefined;
55
+ /**
56
+ * Reads a mount off a root-config entry, or undefined when the entry declares no routing at
57
+ * all — so an unmounted application takes exactly the code path it did before mounts existed.
58
+ *
59
+ * `host`/`urlPath` present but not a string (e.g. `host: 9926`, a likely typo for a quoted
60
+ * value) is rejected rather than silently treated as absent: this fail-closed behavior only
61
+ * works if a wrong-typed value fails the same way a wrong-format one does (review finding) —
62
+ * `null`/`undefined` are still "not declared", since that's how YAML represents an omitted key.
63
+ */
64
+ export declare function toScopeMount(config: unknown): ScopeMount | undefined;
65
+ /**
66
+ * Composes an application mount with a plugin's own `urlPath`.
67
+ *
68
+ * The plugin part is resolved first (`resolveBaseURLPath` semantics: `'.'`/`'./x'` namespace
69
+ * under the plugin name) and the mount is then prefixed, so app-internal structure survives
70
+ * relocation: mount `/v1` + `static: { urlPath: assets }` → `/v1/assets/`. Composing rather
71
+ * than replacing matters because a plugin's `urlPath` doubles as its app-internal base path;
72
+ * replacing it would silently relocate app-internal URLs and collapse distinct plugins onto
73
+ * one path. The result is already absolute and slash-terminated, making it a fixed point of
74
+ * `resolveBaseURLPath` — a consumer that resolves it again cannot compound the prefix.
75
+ */
76
+ export declare function composeMountedUrlPath(mountPath: string | undefined, pluginName: string, pluginUrlPath: string | undefined): string | undefined;
77
+ /**
78
+ * Nests a child component's own mount inside the mount its parent application was given.
79
+ *
80
+ * The parent keeps hostname authority — a child cannot escape the host it is served on — while
81
+ * paths compose, so a parent at `/v1` containing a child mounted at `/child` puts the child at
82
+ * `/v1/child`. Returns whichever side is defined when only one is. A child `host` that differs
83
+ * from the parent's is silently discarded by that authority rule; logged so the operator who
84
+ * wrote it isn't left guessing why it had no effect.
85
+ */
86
+ export declare function nestScopeMount(parent: ScopeMount | undefined, child: ScopeMount | undefined): ScopeMount | undefined;
@@ -0,0 +1,131 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.InvalidMountHostError = exports.InvalidMountPathError = void 0;
7
+ exports.normalizeMountPath = normalizeMountPath;
8
+ exports.normalizeMountHost = normalizeMountHost;
9
+ exports.toScopeMount = toScopeMount;
10
+ exports.composeMountedUrlPath = composeMountedUrlPath;
11
+ exports.nestScopeMount = nestScopeMount;
12
+ const joi_1 = __importDefault(require("joi"));
13
+ const resolveBaseURLPath_ts_1 = require("./resolveBaseURLPath.js");
14
+ const harper_logger_ts_1 = __importDefault(require("../utility/logging/harper_logger.js"));
15
+ class InvalidMountPathError extends Error {
16
+ constructor(urlPath) {
17
+ super(`An application mount urlPath must be an absolute path without '.' or '..' segments. Received: '${urlPath}'`);
18
+ }
19
+ }
20
+ exports.InvalidMountPathError = InvalidMountPathError;
21
+ class InvalidMountHostError extends Error {
22
+ constructor(host) {
23
+ super(`An application mount host must be a bare hostname or IPv6 literal, with no scheme, port, or path. Received: '${host}'`);
24
+ }
25
+ }
26
+ exports.InvalidMountHostError = InvalidMountHostError;
27
+ // Compiled once and reused, mirroring operationsValidation.js's deploy_component 'host' schema:
28
+ // a routing host is either a DNS hostname or a bare IPv6 literal.
29
+ const HOSTNAME_SCHEMA = joi_1.default.string().hostname();
30
+ const IPV6_SCHEMA = joi_1.default.string().ip({ version: 'ipv6' });
31
+ /**
32
+ * Normalizes a mount prefix to a leading-slash, no-trailing-slash form ('/v1'), or
33
+ * undefined when it constrains nothing ('', '/', undefined) — matching
34
+ * `middlewareChain.normalizeUrlPath`, so a mount that means "the root" composes to
35
+ * exactly the plugin's own path rather than rewriting it.
36
+ *
37
+ * Dot segments are rejected rather than resolved. A plugin's `urlPath` may be plugin-name
38
+ * relative ('./x'), but a mount has no such base, and WHATWG clients strip '.' segments
39
+ * before sending the request — a '/.'-prefixed route would simply be unreachable.
40
+ */
41
+ function normalizeMountPath(urlPath) {
42
+ if (!urlPath)
43
+ return undefined;
44
+ if (urlPath.includes('..'))
45
+ throw new resolveBaseURLPath_ts_1.InvalidBaseURLPathError(urlPath);
46
+ let normalized = urlPath.startsWith('/') ? urlPath : `/${urlPath}`;
47
+ normalized = normalized.replace(/\/+$/, '');
48
+ if (normalized.split('/').includes('.'))
49
+ throw new InvalidMountPathError(urlPath);
50
+ return normalized.length <= 1 ? undefined : normalized;
51
+ }
52
+ /**
53
+ * Hostnames are case-insensitive (RFC 4343) and clients send them lowercased, so a mount is
54
+ * held lowercased and compared that way. The bracket form of an IPv6 literal is unwrapped to
55
+ * match what the router extracts from the Host header.
56
+ *
57
+ * Validated against the same grammar as the `deploy_component` operation's `host` field (a bare
58
+ * DNS hostname or IPv6 literal) — the root config is hand-edited YAML with no equivalent gate,
59
+ * so a value that would never match a Host header (a port, a scheme, a path suffix, malformed
60
+ * IDN) must be rejected here rather than silently mounting the application unreachably.
61
+ */
62
+ function normalizeMountHost(host) {
63
+ if (!host)
64
+ return undefined;
65
+ const unbracketed = host.startsWith('[') && host.endsWith(']') ? host.slice(1, -1) : host;
66
+ const normalized = unbracketed.toLowerCase();
67
+ if (HOSTNAME_SCHEMA.validate(normalized).error && IPV6_SCHEMA.validate(normalized).error) {
68
+ throw new InvalidMountHostError(host);
69
+ }
70
+ return normalized;
71
+ }
72
+ /**
73
+ * Reads a mount off a root-config entry, or undefined when the entry declares no routing at
74
+ * all — so an unmounted application takes exactly the code path it did before mounts existed.
75
+ *
76
+ * `host`/`urlPath` present but not a string (e.g. `host: 9926`, a likely typo for a quoted
77
+ * value) is rejected rather than silently treated as absent: this fail-closed behavior only
78
+ * works if a wrong-typed value fails the same way a wrong-format one does (review finding) —
79
+ * `null`/`undefined` are still "not declared", since that's how YAML represents an omitted key.
80
+ */
81
+ function toScopeMount(config) {
82
+ if (!config || typeof config !== 'object')
83
+ return undefined;
84
+ const { host, urlPath } = config;
85
+ if (host !== undefined && host !== null && typeof host !== 'string')
86
+ throw new InvalidMountHostError(String(host));
87
+ if (urlPath !== undefined && urlPath !== null && typeof urlPath !== 'string')
88
+ throw new InvalidMountPathError(String(urlPath));
89
+ const mountHost = normalizeMountHost(typeof host === 'string' ? host : undefined);
90
+ const mountPath = normalizeMountPath(typeof urlPath === 'string' ? urlPath : undefined);
91
+ if (!mountHost && !mountPath)
92
+ return undefined;
93
+ return { host: mountHost, urlPath: mountPath };
94
+ }
95
+ /**
96
+ * Composes an application mount with a plugin's own `urlPath`.
97
+ *
98
+ * The plugin part is resolved first (`resolveBaseURLPath` semantics: `'.'`/`'./x'` namespace
99
+ * under the plugin name) and the mount is then prefixed, so app-internal structure survives
100
+ * relocation: mount `/v1` + `static: { urlPath: assets }` → `/v1/assets/`. Composing rather
101
+ * than replacing matters because a plugin's `urlPath` doubles as its app-internal base path;
102
+ * replacing it would silently relocate app-internal URLs and collapse distinct plugins onto
103
+ * one path. The result is already absolute and slash-terminated, making it a fixed point of
104
+ * `resolveBaseURLPath` — a consumer that resolves it again cannot compound the prefix.
105
+ */
106
+ function composeMountedUrlPath(mountPath, pluginName, pluginUrlPath) {
107
+ if (!mountPath)
108
+ return pluginUrlPath;
109
+ return `${mountPath}${(0, resolveBaseURLPath_ts_1.resolveBaseURLPath)(pluginName, pluginUrlPath)}`;
110
+ }
111
+ /**
112
+ * Nests a child component's own mount inside the mount its parent application was given.
113
+ *
114
+ * The parent keeps hostname authority — a child cannot escape the host it is served on — while
115
+ * paths compose, so a parent at `/v1` containing a child mounted at `/child` puts the child at
116
+ * `/v1/child`. Returns whichever side is defined when only one is. A child `host` that differs
117
+ * from the parent's is silently discarded by that authority rule; logged so the operator who
118
+ * wrote it isn't left guessing why it had no effect.
119
+ */
120
+ function nestScopeMount(parent, child) {
121
+ if (!parent)
122
+ return child;
123
+ if (!child)
124
+ return parent;
125
+ if (parent.host && child.host && parent.host !== child.host) {
126
+ harper_logger_ts_1.default.warn(`Component mount host '${child.host}' is ignored because it is nested under an application mounted on host '${parent.host}' — a child's host cannot override its parent's.`);
127
+ }
128
+ const urlPath = child.urlPath ? `${parent.urlPath ?? ''}${child.urlPath}` : parent.urlPath;
129
+ return { host: parent.host ?? child.host, urlPath: urlPath || undefined };
130
+ }
131
+ //# sourceMappingURL=scopeMount.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scopeMount.js","sourceRoot":"","sources":["../../components/scopeMount.ts"],"names":[],"mappings":";;;;;;AA4DA,gDAOC;AAYD,gDAQC;AAWD,oCAUC;AAaD,sDAOC;AAWD,wCAUC;AArJD,8CAAsB;AACtB,mEAAsF;AACtF,2FAA+D;AA6B/D,MAAa,qBAAsB,SAAQ,KAAK;IAC/C,YAAY,OAAe;QAC1B,KAAK,CAAC,kGAAkG,OAAO,GAAG,CAAC,CAAC;IACrH,CAAC;CACD;AAJD,sDAIC;AAED,MAAa,qBAAsB,SAAQ,KAAK;IAC/C,YAAY,IAAY;QACvB,KAAK,CACJ,gHAAgH,IAAI,GAAG,CACvH,CAAC;IACH,CAAC;CACD;AAND,sDAMC;AAED,gGAAgG;AAChG,kEAAkE;AAClE,MAAM,eAAe,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;AAChD,MAAM,WAAW,GAAG,aAAG,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;AAEzD;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,OAA2B;IAC7D,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,+CAAuB,CAAC,OAAO,CAAC,CAAC;IACvE,IAAI,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC;IACnE,UAAU,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5C,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,qBAAqB,CAAC,OAAO,CAAC,CAAC;IAClF,OAAO,UAAU,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;AACxD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,kBAAkB,CAAC,IAAwB;IAC1D,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAC;IAC5B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAC1F,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,EAAE,CAAC;IAC7C,IAAI,eAAe,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,WAAW,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1F,MAAM,IAAI,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IACD,OAAO,UAAU,CAAC;AACnB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,YAAY,CAAC,MAAe;IAC3C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC5D,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,MAAoB,CAAC;IAC/C,IAAI,IAAI,KAAK,SAAS,IAAI,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;QAAE,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IACnH,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,IAAI,IAAI,OAAO,OAAO,KAAK,QAAQ;QAC3E,MAAM,IAAI,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;IAClD,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAClF,MAAM,SAAS,GAAG,kBAAkB,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACxF,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChD,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,qBAAqB,CACpC,SAA6B,EAC7B,UAAkB,EAClB,aAAiC;IAEjC,IAAI,CAAC,SAAS;QAAE,OAAO,aAAa,CAAC;IACrC,OAAO,GAAG,SAAS,GAAG,IAAA,0CAAkB,EAAC,UAAU,EAAE,aAAa,CAAC,EAAE,CAAC;AACvE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,cAAc,CAAC,MAA8B,EAAE,KAA6B;IAC3F,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAC1B,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC;QAC7D,0BAAY,CAAC,IAAI,CAChB,yBAAyB,KAAK,CAAC,IAAI,2EAA2E,MAAM,CAAC,IAAI,kDAAkD,CAC3K,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAC3F,OAAO,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,26 @@
1
+ export type BackupManifest = {
2
+ /** The RocksDB backup id this manifest completes. */
3
+ backupId: number;
4
+ /** Whether the backup captured the database's file-backed blobs (false = engine-only). */
5
+ blobs: boolean;
6
+ /** Epoch-ms timestamp when both phases completed. */
7
+ completedAt: number;
8
+ };
9
+ /**
10
+ * Write a backup's completion manifest atomically. Call only after the engine backup and (when
11
+ * included) the blob snapshot are both durable — its presence is what marks the backup usable.
12
+ */
13
+ export declare function writeBackupManifest(backupDir: string, backupId: number, blobs: boolean): Promise<void>;
14
+ /** Read a backup's completion manifest, or null when it has none (incomplete / not yet written). */
15
+ export declare function readBackupManifest(backupDir: string, backupId: number): Promise<BackupManifest | null>;
16
+ /** Whether a backup id has a completion manifest (i.e. its creation finished). */
17
+ export declare function isBackupComplete(backupDir: string, backupId: number): boolean;
18
+ /** Remove a backup's manifest (paired with deleting the backup); best-effort. */
19
+ export declare function deleteBackupManifest(backupDir: string, backupId: number): Promise<void>;
20
+ /** Remove manifests for every backup id not in `keepIds` (paired with `backups.purge`). */
21
+ export declare function purgeBackupManifests(backupDir: string, keepIds: Set<number>): Promise<void>;
22
+ /**
23
+ * Read every completion manifest in a backup directory, keyed by backup id. Backup ids without a
24
+ * manifest (incomplete) are absent from the map. A manifest that fails to parse is skipped.
25
+ */
26
+ export declare function readAllManifests(backupDir: string): Promise<Map<number, BackupManifest>>;
@@ -0,0 +1,97 @@
1
+ 'use strict';
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.writeBackupManifest = writeBackupManifest;
4
+ exports.readBackupManifest = readBackupManifest;
5
+ exports.isBackupComplete = isBackupComplete;
6
+ exports.deleteBackupManifest = deleteBackupManifest;
7
+ exports.purgeBackupManifests = purgeBackupManifests;
8
+ exports.readAllManifests = readAllManifests;
9
+ const node_fs_1 = require("node:fs");
10
+ const promises_1 = require("node:fs/promises");
11
+ const node_path_1 = require("node:path");
12
+ /**
13
+ * Per-backup completion manifest for RocksDB managed backups.
14
+ *
15
+ * `create_backup` is two-phase: the engine backup (`rootStore.backup()`) resolves — and becomes
16
+ * visible to `list_backups`/`verify_backup`/`restore_backup` — before the blob snapshot is copied.
17
+ * Without a completion record, a blob-snapshot failure (or a crash between the two phases) leaves an
18
+ * engine backup on disk that lists and verifies as healthy while silently missing its blobs, and a
19
+ * concurrent restore could select a backup id whose blob snapshot is still being written and treat
20
+ * it as an intentional engine-only backup.
21
+ *
22
+ * A manifest at `<backupDir>/manifests/<backupId>.json` is written (atomically, temp + rename) only
23
+ * after *both* phases are durably in place, and records whether blobs were captured. Consumers treat
24
+ * a backup id with no manifest as incomplete — not usable for restore, and hidden from the listing.
25
+ * The `manifests/` directory is Harper-managed and ignored by the rocksdb-js binding (same as the
26
+ * sibling `blobs/` and `transaction_logs/` directories).
27
+ */
28
+ const MANIFEST_DIR = 'manifests';
29
+ function manifestDir(backupDir) {
30
+ return (0, node_path_1.join)(backupDir, MANIFEST_DIR);
31
+ }
32
+ function manifestPath(backupDir, backupId) {
33
+ return (0, node_path_1.join)(manifestDir(backupDir), `${backupId}.json`);
34
+ }
35
+ /**
36
+ * Write a backup's completion manifest atomically. Call only after the engine backup and (when
37
+ * included) the blob snapshot are both durable — its presence is what marks the backup usable.
38
+ */
39
+ async function writeBackupManifest(backupDir, backupId, blobs) {
40
+ const dir = manifestDir(backupDir);
41
+ await (0, promises_1.mkdir)(dir, { recursive: true });
42
+ const manifest = { backupId, blobs, completedAt: Date.now() };
43
+ const tempPath = (0, node_path_1.join)(dir, `.tmp-${backupId}.json`);
44
+ await (0, promises_1.writeFile)(tempPath, JSON.stringify(manifest));
45
+ await (0, promises_1.rename)(tempPath, manifestPath(backupDir, backupId)); // atomic publish
46
+ }
47
+ /** Read a backup's completion manifest, or null when it has none (incomplete / not yet written). */
48
+ async function readBackupManifest(backupDir, backupId) {
49
+ try {
50
+ return JSON.parse(await (0, promises_1.readFile)(manifestPath(backupDir, backupId), 'utf8'));
51
+ }
52
+ catch (error) {
53
+ if (error.code === 'ENOENT')
54
+ return null;
55
+ throw error;
56
+ }
57
+ }
58
+ /** Whether a backup id has a completion manifest (i.e. its creation finished). */
59
+ function isBackupComplete(backupDir, backupId) {
60
+ return (0, node_fs_1.existsSync)(manifestPath(backupDir, backupId));
61
+ }
62
+ /** Remove a backup's manifest (paired with deleting the backup); best-effort. */
63
+ async function deleteBackupManifest(backupDir, backupId) {
64
+ await (0, promises_1.rm)(manifestPath(backupDir, backupId), { force: true });
65
+ }
66
+ /** Remove manifests for every backup id not in `keepIds` (paired with `backups.purge`). */
67
+ async function purgeBackupManifests(backupDir, keepIds) {
68
+ const dir = manifestDir(backupDir);
69
+ if (!(0, node_fs_1.existsSync)(dir))
70
+ return;
71
+ for (const name of await (0, promises_1.readdir)(dir)) {
72
+ const match = /^(\d+)\.json$/.exec(name);
73
+ if (match && !keepIds.has(Number(match[1])))
74
+ await (0, promises_1.rm)((0, node_path_1.join)(dir, name), { force: true });
75
+ }
76
+ }
77
+ /**
78
+ * Read every completion manifest in a backup directory, keyed by backup id. Backup ids without a
79
+ * manifest (incomplete) are absent from the map. A manifest that fails to parse is skipped.
80
+ */
81
+ async function readAllManifests(backupDir) {
82
+ const dir = manifestDir(backupDir);
83
+ const manifests = new Map();
84
+ if (!(0, node_fs_1.existsSync)(dir))
85
+ return manifests;
86
+ for (const name of await (0, promises_1.readdir)(dir)) {
87
+ const match = /^(\d+)\.json$/.exec(name);
88
+ if (!match)
89
+ continue;
90
+ const backupId = Number(match[1]);
91
+ const manifest = await readBackupManifest(backupDir, backupId).catch(() => null);
92
+ if (manifest)
93
+ manifests.set(backupId, manifest);
94
+ }
95
+ return manifests;
96
+ }
97
+ //# sourceMappingURL=backupManifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"backupManifest.js","sourceRoot":"","sources":["../../dataLayer/backupManifest.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Managed-backup snapshotting of a database's file-backed blobs.
3
+ *
4
+ * A database's blobs live in one or more root directories *outside* the RocksDB directory (see
5
+ * `resources/blob.ts` `getBlobPathsForDatabaseName`), so the engine's own backup does not capture
6
+ * them. These helpers snapshot the blob roots alongside a RocksDB managed backup and restore them
7
+ * with it, so a restored database's records still resolve their file-backed blobs.
8
+ *
9
+ * Layout mirrors the binding's transaction-log snapshots (`<backupDir>/transaction_logs/<id>/`): a
10
+ * full, non-incremental copy per backup at `<backupDir>/blobs/<backupId>/<rootIndex>/<relpath>`,
11
+ * where `rootIndex` is the position of the source root in the database's blob-root list (preserved
12
+ * so a multi-root database restores each root back to its original slot). Files are hard-linked when
13
+ * possible (cheap, no extra space on the same filesystem) and copied otherwise (never symlinked, so
14
+ * a snapshot is a standalone set of files that survives independent of the live blob).
15
+ *
16
+ * Consistency is best-effort and point-in-time-ish, matching how the engine treats the transaction
17
+ * log: the walk captures whatever files exist at snapshot time. A blob deleted mid-walk is skipped;
18
+ * a blob being written mid-walk is captured as-is (a hard link shares the inode, so it reflects the
19
+ * writer's final bytes; a cross-filesystem copy captures the bytes present at copy time). Harper
20
+ * does not freeze blob writes for the duration of a backup.
21
+ *
22
+ * Hard-linking is safe against later mutation because Harper blobs are content-addressed and
23
+ * write-once: each write allocates a fresh monotonic file id (a new path), and an update or delete
24
+ * unlinks the old path rather than rewriting it in place — so a snapshot's hard link keeps the exact
25
+ * bytes alive even after the live blob is deleted, and no in-place overwrite can retroactively alter
26
+ * a snapshot.
27
+ */
28
+ /** Directory holding all blob snapshots for a backup repository. */
29
+ export declare function blobsRootDir(backupDir: string): string;
30
+ /** Directory holding a single backup id's blob snapshot. */
31
+ export declare function blobSnapshotDir(backupDir: string, backupId: number): string;
32
+ /**
33
+ * Snapshot a database's blob roots into a backup's blob directory. Writes to a temporary sibling
34
+ * and atomically renames into place so a create_backup that fails mid-copy never leaves a partial
35
+ * `blobs/<backupId>/` that a later restore would trust. Overwrites any pre-existing snapshot for the
36
+ * same id (create_backup always produces a fresh id, so this only matters on a retried offline run).
37
+ */
38
+ export declare function snapshotBlobs(backupDir: string, backupId: number, blobRoots: string[]): Promise<void>;
39
+ /**
40
+ * Build the `blobs/README.md` documenting the blob snapshot layout, so an operator inspecting or
41
+ * hand-recovering a backup can decode the numeric directories. Two variants:
42
+ * - managed (default): a create_backup repository, where snapshots are keyed by backup id
43
+ * (`<backupId>/<rootIndex>/…`) and restore is automatic via `restore_backup`.
44
+ * - archive (`archive: true`): a downloaded `get_backup` tar, which holds a single snapshot with no
45
+ * backup-id level (`<rootIndex>/…`) and is restored by extracting the files back into the roots.
46
+ */
47
+ export declare function blobsReadmeContent(blobRoots: string[], { archive }?: {
48
+ archive?: boolean;
49
+ }): string;
50
+ /**
51
+ * Write the `blobs/README.md` into a managed backup's `blobs/` directory. Best-effort: a failure to
52
+ * write the doc must not fail an otherwise-successful backup.
53
+ */
54
+ export declare function writeBlobsReadme(backupDir: string, blobRoots: string[]): Promise<void>;
55
+ /**
56
+ * Reject (before any destructive step) a restore whose snapshot has more blob roots than the
57
+ * database is currently configured with. File-backed blob references persist their `storageIndex`,
58
+ * so a record written under root index 1 keeps resolving through `blobRoots[1]`; collapsing the
59
+ * out-of-range index onto another root would preserve the bytes at the wrong address and the restore
60
+ * would "succeed" while reads of those blobs fail. The operator must reconcile `storage.blobPaths`
61
+ * to at least as many roots as the backup before restoring. Callers invoke this ahead of the engine
62
+ * restore so a mismatch never purges the database.
63
+ */
64
+ export declare function assertBlobSnapshotRestorable(backupDir: string, backupId: number, blobRoots: string[]): Promise<void>;
65
+ /**
66
+ * Restore a backup's blob snapshot back into the database's blob roots. Each root is purged and
67
+ * rewritten from `blobs/<backupId>/<rootIndex>/` so the restored blob set matches the backup exactly
68
+ * (a newer blob written after the backup is removed, mirroring the engine's `purgeAllFiles` restore).
69
+ *
70
+ * A backup created with blobs excluded (or an older backup that predates blob snapshots) has no
71
+ * snapshot directory: in that case the live blob roots are left untouched and a warning is logged,
72
+ * since purging them would strip blobs the restored records may still reference. Roots are restored
73
+ * by index into the *same* configured root; an incompatible root count is rejected up front (see
74
+ * `assertBlobSnapshotRestorable`) rather than collapsed, so blobs are never mis-addressed.
75
+ */
76
+ export declare function restoreBlobSnapshot(backupDir: string, backupId: number, databaseName: string, blobRoots: string[]): Promise<void>;
77
+ /**
78
+ * Remove the blob snapshot for a single backup id (paired with `backups.delete`). Best-effort:
79
+ * a missing snapshot directory is fine.
80
+ */
81
+ export declare function deleteBlobSnapshot(backupDir: string, backupId: number): Promise<void>;
82
+ /**
83
+ * Remove blob snapshots for every backup id not in `keepIds` (paired with `backups.purge`, which
84
+ * reference-counts and removes the engine files; blob snapshots are full per-id copies, so they are
85
+ * simply deleted). Given the ids that survive the purge, this deletes the rest.
86
+ */
87
+ export declare function purgeBlobSnapshots(backupDir: string, keepIds: Set<number>): Promise<void>;