@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.
- package/bin/backup.ts +169 -0
- package/bin/cliOperations.ts +92 -73
- package/bin/harper.ts +25 -6
- package/components/Scope.ts +52 -6
- package/components/componentLoader.ts +107 -9
- package/components/mcp/toolRegistry.ts +10 -0
- package/components/mcp/tools/application.ts +12 -5
- package/components/mcp/tools/operations.ts +3 -0
- package/components/mcp/tools/schemas/operationDescriptions.ts +3 -0
- package/components/mcp/tools/schemas/operations.ts +9 -0
- package/components/operations.js +1 -0
- package/components/operationsValidation.js +32 -2
- package/components/scopeMount.ts +150 -0
- package/config-root.schema.json +4 -0
- package/dataLayer/backupManifest.ts +102 -0
- package/dataLayer/blobBackup.ts +286 -0
- package/dataLayer/harperBridge/ResourceBridge.ts +43 -0
- package/dataLayer/restoreMarker.ts +276 -0
- package/dataLayer/rocksdbBackup.ts +1100 -0
- package/dist/bin/backup.d.ts +9 -0
- package/dist/bin/backup.js +192 -0
- package/dist/bin/backup.js.map +1 -0
- package/dist/bin/cliOperations.d.ts +13 -0
- package/dist/bin/cliOperations.js +89 -70
- package/dist/bin/cliOperations.js.map +1 -1
- package/dist/bin/harper.d.ts +7 -0
- package/dist/bin/harper.js +27 -6
- package/dist/bin/harper.js.map +1 -1
- package/dist/components/Scope.d.ts +37 -1
- package/dist/components/Scope.js +48 -6
- package/dist/components/Scope.js.map +1 -1
- package/dist/components/componentLoader.d.ts +2 -6
- package/dist/components/componentLoader.js +91 -8
- package/dist/components/componentLoader.js.map +1 -1
- package/dist/components/mcp/toolRegistry.d.ts +7 -0
- package/dist/components/mcp/toolRegistry.js +10 -0
- package/dist/components/mcp/toolRegistry.js.map +1 -1
- package/dist/components/mcp/tools/application.js +11 -5
- package/dist/components/mcp/tools/application.js.map +1 -1
- package/dist/components/mcp/tools/operations.js +3 -0
- package/dist/components/mcp/tools/operations.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operationDescriptions.js +2 -0
- package/dist/components/mcp/tools/schemas/operationDescriptions.js.map +1 -1
- package/dist/components/mcp/tools/schemas/operations.js +9 -0
- package/dist/components/mcp/tools/schemas/operations.js.map +1 -1
- package/dist/components/operations.js +2 -0
- package/dist/components/operations.js.map +1 -1
- package/dist/components/operationsValidation.js +34 -2
- package/dist/components/operationsValidation.js.map +1 -1
- package/dist/components/scopeMount.d.ts +86 -0
- package/dist/components/scopeMount.js +131 -0
- package/dist/components/scopeMount.js.map +1 -0
- package/dist/dataLayer/backupManifest.d.ts +26 -0
- package/dist/dataLayer/backupManifest.js +97 -0
- package/dist/dataLayer/backupManifest.js.map +1 -0
- package/dist/dataLayer/blobBackup.d.ts +87 -0
- package/dist/dataLayer/blobBackup.js +282 -0
- package/dist/dataLayer/blobBackup.js.map +1 -0
- package/dist/dataLayer/harperBridge/ResourceBridge.d.ts +3 -0
- package/dist/dataLayer/harperBridge/ResourceBridge.js +33 -0
- package/dist/dataLayer/harperBridge/ResourceBridge.js.map +1 -1
- package/dist/dataLayer/restoreMarker.d.ts +122 -0
- package/dist/dataLayer/restoreMarker.js +261 -0
- package/dist/dataLayer/restoreMarker.js.map +1 -0
- package/dist/dataLayer/rocksdbBackup.d.ts +127 -0
- package/dist/dataLayer/rocksdbBackup.js +1039 -0
- package/dist/dataLayer/rocksdbBackup.js.map +1 -0
- package/dist/resources/DatabaseTransaction.js +0 -6
- package/dist/resources/DatabaseTransaction.js.map +1 -1
- package/dist/resources/ResourceInterface.d.ts +0 -3
- package/dist/resources/ResourceInterface.js.map +1 -1
- package/dist/resources/Table.js +22 -22
- package/dist/resources/Table.js.map +1 -1
- package/dist/resources/blob.d.ts +8 -0
- package/dist/resources/blob.js +16 -7
- package/dist/resources/blob.js.map +1 -1
- package/dist/resources/databases.d.ts +42 -1
- package/dist/resources/databases.js +276 -40
- package/dist/resources/databases.js.map +1 -1
- package/dist/resources/transaction.js +0 -3
- package/dist/resources/transaction.js.map +1 -1
- package/dist/server/REST.js +25 -9
- package/dist/server/REST.js.map +1 -1
- package/dist/server/fastifyRoutes.js +15 -1
- package/dist/server/fastifyRoutes.js.map +1 -1
- package/dist/server/itc/serverHandlers.js +7 -1
- package/dist/server/itc/serverHandlers.js.map +1 -1
- package/dist/server/jobs/jobProcess.js +20 -1
- package/dist/server/jobs/jobProcess.js.map +1 -1
- package/dist/server/jobs/jobRunner.js +10 -0
- package/dist/server/jobs/jobRunner.js.map +1 -1
- package/dist/server/jobs/jobs.js +11 -0
- package/dist/server/jobs/jobs.js.map +1 -1
- package/dist/server/middlewareChain.d.ts +10 -1
- package/dist/server/middlewareChain.js +81 -21
- package/dist/server/middlewareChain.js.map +1 -1
- package/dist/server/serverHelpers/serverHandlers.js +8 -4
- package/dist/server/serverHelpers/serverHandlers.js.map +1 -1
- package/dist/server/serverHelpers/serverUtilities.js +11 -0
- package/dist/server/serverHelpers/serverUtilities.js.map +1 -1
- package/dist/server/static.js +11 -3
- package/dist/server/static.js.map +1 -1
- package/dist/utility/OperationFunctionCaller.js +25 -6
- package/dist/utility/OperationFunctionCaller.js.map +1 -1
- package/dist/utility/hdbTerms.d.ts +11 -1
- package/dist/utility/hdbTerms.js +11 -1
- package/dist/utility/hdbTerms.js.map +1 -1
- package/dist/utility/logging/harper_logger.d.ts +40 -0
- package/dist/utility/logging/harper_logger.js +746 -14
- package/dist/utility/logging/harper_logger.js.map +1 -1
- package/dist/utility/operation_authorization.js +13 -3
- package/dist/utility/operation_authorization.js.map +1 -1
- package/npm-shrinkwrap.json +3 -2
- package/package.json +4 -1
- package/resources/DESIGN.md +2 -0
- package/resources/DatabaseTransaction.ts +0 -3
- package/resources/ResourceInterface.ts +0 -3
- package/resources/Table.ts +20 -20
- package/resources/blob.ts +16 -6
- package/resources/databases.ts +272 -42
- package/resources/transaction.ts +0 -3
- package/server/DESIGN.md +16 -0
- package/server/REST.ts +25 -9
- package/server/fastifyRoutes.ts +20 -1
- package/server/itc/serverHandlers.js +7 -1
- package/server/jobs/jobProcess.ts +18 -1
- package/server/jobs/jobRunner.ts +10 -0
- package/server/jobs/jobs.ts +11 -0
- package/server/middlewareChain.ts +79 -20
- package/server/serverHelpers/serverHandlers.js +8 -4
- package/server/serverHelpers/serverUtilities.ts +19 -0
- package/server/static.ts +12 -3
- package/static/defaultConfig.yaml +1 -0
- package/studio/web/assets/{Chat-DK3GlWEb.js → Chat-DoVWScmq.js} +2 -2
- package/studio/web/assets/{Chat-DK3GlWEb.js.map → Chat-DoVWScmq.js.map} +1 -1
- package/studio/web/assets/{FloatingChat-fBcC1Ew_.js → FloatingChat-UZ2NsUOZ.js} +4 -4
- package/studio/web/assets/{FloatingChat-fBcC1Ew_.js.map → FloatingChat-UZ2NsUOZ.js.map} +1 -1
- package/studio/web/assets/{apiToken-DJo1nakA.js → apiToken-BUI_04o7.js} +2 -2
- package/studio/web/assets/{apiToken-DJo1nakA.js.map → apiToken-BUI_04o7.js.map} +1 -1
- package/studio/web/assets/{applications-BDfH8urd.js → applications-D03NA7wW.js} +2 -2
- package/studio/web/assets/{applications-BDfH8urd.js.map → applications-D03NA7wW.js.map} +1 -1
- package/studio/web/assets/{index-BHo3c2Gk.js → index-Bh_CNAHr.js} +6 -6
- package/studio/web/assets/index-Bh_CNAHr.js.map +1 -0
- package/studio/web/assets/{index.lazy-BTo0y6UM.js → index.lazy-Dx3MpyDC.js} +4 -4
- package/studio/web/assets/{index.lazy-BTo0y6UM.js.map → index.lazy-Dx3MpyDC.js.map} +1 -1
- package/studio/web/assets/{notifications-CMxvWNnz.js → notifications-0edoFTsb.js} +2 -2
- package/studio/web/assets/{notifications-CMxvWNnz.js.map → notifications-0edoFTsb.js.map} +1 -1
- package/studio/web/assets/{notifications-D3GoB26g.js → notifications-CwKhipK7.js} +2 -2
- package/studio/web/assets/{notifications-D3GoB26g.js.map → notifications-CwKhipK7.js.map} +1 -1
- package/studio/web/assets/{profile-Doj5FVDE.js → profile-DUfEPQtx.js} +2 -2
- package/studio/web/assets/{profile-Doj5FVDE.js.map → profile-DUfEPQtx.js.map} +1 -1
- package/studio/web/assets/{setComponentFile-yinsqJy0.js → setComponentFile-DMPo4UjC.js} +2 -2
- package/studio/web/assets/{setComponentFile-yinsqJy0.js.map → setComponentFile-DMPo4UjC.js.map} +1 -1
- package/studio/web/assets/{setup-DJwR0BHd.js → setup-B56Oz1_u.js} +2 -2
- package/studio/web/assets/{setup-DJwR0BHd.js.map → setup-B56Oz1_u.js.map} +1 -1
- package/studio/web/assets/{status-Br_AbsJs.js → status-BAod7p3o.js} +2 -2
- package/studio/web/assets/{status-Br_AbsJs.js.map → status-BAod7p3o.js.map} +1 -1
- package/studio/web/assets/{swagger-ui-react-02XH5sVf.js → swagger-ui-react-lQrBxfwM.js} +2 -2
- package/studio/web/assets/{swagger-ui-react-02XH5sVf.js.map → swagger-ui-react-lQrBxfwM.js.map} +1 -1
- package/studio/web/assets/{tsMode-D1DMKY7h.js → tsMode-CrHCRjTK.js} +2 -2
- package/studio/web/assets/{tsMode-D1DMKY7h.js.map → tsMode-CrHCRjTK.js.map} +1 -1
- package/studio/web/assets/{useEntityRestURL-DtRblRgw.js → useEntityRestURL-DoaBMEvU.js} +2 -2
- package/studio/web/assets/{useEntityRestURL-DtRblRgw.js.map → useEntityRestURL-DoaBMEvU.js.map} +1 -1
- package/studio/web/index.html +1 -1
- package/utility/OperationFunctionCaller.ts +24 -3
- package/utility/hdbTerms.ts +11 -1
- package/utility/logging/harper_logger.ts +729 -15
- package/utility/operation_authorization.ts +31 -3
- 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":"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"}
|
|
@@ -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>;
|