@knpkv/herdr-approvals 0.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/LICENSE +21 -0
- package/README.md +22 -0
- package/dist/activity-history.d.ts +36 -0
- package/dist/activity-history.d.ts.map +1 -0
- package/dist/activity-history.js +233 -0
- package/dist/activity-history.js.map +1 -0
- package/dist/approval-app-view.d.ts +26 -0
- package/dist/approval-app-view.d.ts.map +1 -0
- package/dist/approval-app-view.js +79 -0
- package/dist/approval-app-view.js.map +1 -0
- package/dist/approval-client.d.ts +2 -0
- package/dist/approval-client.d.ts.map +1 -0
- package/dist/approval-client.js +520 -0
- package/dist/approval-client.js.map +1 -0
- package/dist/approval-sw.js +28 -0
- package/dist/approval-sw.js.map +7 -0
- package/dist/approval-url.d.ts +37 -0
- package/dist/approval-url.d.ts.map +1 -0
- package/dist/approval-url.js +37 -0
- package/dist/approval-url.js.map +1 -0
- package/dist/approval.js +188 -0
- package/dist/approval.js.map +7 -0
- package/dist/auth.d.ts +10 -0
- package/dist/auth.d.ts.map +1 -0
- package/dist/auth.js +14 -0
- package/dist/auth.js.map +1 -0
- package/dist/bin.d.ts +3 -0
- package/dist/bin.d.ts.map +1 -0
- package/dist/bin.js +47 -0
- package/dist/bin.js.map +1 -0
- package/dist/connect-entry.d.ts +2 -0
- package/dist/connect-entry.d.ts.map +1 -0
- package/dist/connect-entry.js +2 -0
- package/dist/connect-entry.js.map +1 -0
- package/dist/connect.js +188 -0
- package/dist/connect.js.map +7 -0
- package/dist/dashboard-model.d.ts +719 -0
- package/dist/dashboard-model.d.ts.map +1 -0
- package/dist/dashboard-model.js +83 -0
- package/dist/dashboard-model.js.map +1 -0
- package/dist/dashboard-view.d.ts +42 -0
- package/dist/dashboard-view.d.ts.map +1 -0
- package/dist/dashboard-view.js +194 -0
- package/dist/dashboard-view.js.map +1 -0
- package/dist/errors.d.ts +33 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +12 -0
- package/dist/errors.js.map +1 -0
- package/dist/fleetctl-submission.d.ts +68 -0
- package/dist/fleetctl-submission.d.ts.map +1 -0
- package/dist/fleetctl-submission.js +31 -0
- package/dist/fleetctl-submission.js.map +1 -0
- package/dist/fleetctl.d.ts +22 -0
- package/dist/fleetctl.d.ts.map +1 -0
- package/dist/fleetctl.js +264 -0
- package/dist/fleetctl.js.map +1 -0
- package/dist/geist-latin-wght-normal.woff2 +0 -0
- package/dist/geist-mono-latin-wght-normal.woff2 +0 -0
- package/dist/http.d.ts +1512 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +1653 -0
- package/dist/http.js.map +1 -0
- package/dist/index.css +2 -0
- package/dist/index.css.map +7 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -0
- package/dist/internal/config-path.d.ts +3 -0
- package/dist/internal/config-path.d.ts.map +1 -0
- package/dist/internal/config-path.js +3 -0
- package/dist/internal/config-path.js.map +1 -0
- package/dist/internal/dashboard-pending-state.d.ts +49 -0
- package/dist/internal/dashboard-pending-state.d.ts.map +1 -0
- package/dist/internal/dashboard-pending-state.js +98 -0
- package/dist/internal/dashboard-pending-state.js.map +1 -0
- package/dist/internal/fleet-follow.d.ts +54 -0
- package/dist/internal/fleet-follow.d.ts.map +1 -0
- package/dist/internal/fleet-follow.js +10 -0
- package/dist/internal/fleet-follow.js.map +1 -0
- package/dist/internal/fleet-request.d.ts +4 -0
- package/dist/internal/fleet-request.d.ts.map +1 -0
- package/dist/internal/fleet-request.js +11 -0
- package/dist/internal/fleet-request.js.map +1 -0
- package/dist/internal/html.d.ts +3 -0
- package/dist/internal/html.d.ts.map +1 -0
- package/dist/internal/html.js +8 -0
- package/dist/internal/html.js.map +1 -0
- package/dist/internal/websocket.d.ts +4 -0
- package/dist/internal/websocket.d.ts.map +1 -0
- package/dist/internal/websocket.js +12 -0
- package/dist/internal/websocket.js.map +1 -0
- package/dist/model.d.ts +40 -0
- package/dist/model.d.ts.map +1 -0
- package/dist/model.js +53 -0
- package/dist/model.js.map +1 -0
- package/dist/operations.d.ts +72 -0
- package/dist/operations.d.ts.map +1 -0
- package/dist/operations.js +284 -0
- package/dist/operations.js.map +1 -0
- package/dist/push-policy.d.ts +3 -0
- package/dist/push-policy.d.ts.map +1 -0
- package/dist/push-policy.js +3 -0
- package/dist/push-policy.js.map +1 -0
- package/dist/push-sender.d.ts +18 -0
- package/dist/push-sender.d.ts.map +1 -0
- package/dist/push-sender.js +33 -0
- package/dist/push-sender.js.map +1 -0
- package/dist/push-subscription.d.ts +17 -0
- package/dist/push-subscription.d.ts.map +1 -0
- package/dist/push-subscription.js +62 -0
- package/dist/push-subscription.js.map +1 -0
- package/dist/push-worker.d.ts +20 -0
- package/dist/push-worker.d.ts.map +1 -0
- package/dist/push-worker.js +32 -0
- package/dist/push-worker.js.map +1 -0
- package/dist/pwa.d.ts +39 -0
- package/dist/pwa.d.ts.map +1 -0
- package/dist/pwa.js +51 -0
- package/dist/pwa.js.map +1 -0
- package/dist/shell-view.d.ts +20 -0
- package/dist/shell-view.d.ts.map +1 -0
- package/dist/shell-view.js +86 -0
- package/dist/shell-view.js.map +1 -0
- package/dist/store.d.ts +46 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +291 -0
- package/dist/store.js.map +1 -0
- package/dist/work-checkpoint.d.ts +107 -0
- package/dist/work-checkpoint.d.ts.map +1 -0
- package/dist/work-checkpoint.js +37 -0
- package/dist/work-checkpoint.js.map +1 -0
- package/package.json +90 -0
package/dist/auth.d.ts
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { FleetAuthorizationError } from "@knpkv/herdr-fleet";
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
export interface RequestIdentity {
|
|
4
|
+
readonly login: string | undefined;
|
|
5
|
+
readonly remoteAddress: string | undefined;
|
|
6
|
+
}
|
|
7
|
+
export type LoopbackActor = "local";
|
|
8
|
+
export declare const authorizeLoopback: (identity: RequestIdentity) => Effect.Effect<LoopbackActor, FleetAuthorizationError>;
|
|
9
|
+
export declare const authorize: (identity: RequestIdentity, allowedUsers: ReadonlyArray<string>, allowLocal: boolean) => Effect.Effect<"local", FleetAuthorizationError, never>;
|
|
10
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAE/B,MAAM,WAAW,eAAe;IAC9B,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,aAAa,EAAE,MAAM,GAAG,SAAS,CAAA;CAC3C;AAID,MAAM,MAAM,aAAa,GAAG,OAAO,CAAA;AAEnC,eAAO,MAAM,iBAAiB,aAClB,eAAe,KACxB,MAAM,CAAC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAOlD,CAAA;AAEL,eAAO,MAAM,SAAS,aACV,eAAe,gBACX,aAAa,CAAC,MAAM,CAAC,cACvB,OAAO,2DAQhB,CAAA"}
|
package/dist/auth.js
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { FleetAuthorizationError } from "@knpkv/herdr-fleet";
|
|
2
|
+
import { Effect } from "effect";
|
|
3
|
+
const loopback = new Set(["127.0.0.1", "::1", "::ffff:127.0.0.1"]);
|
|
4
|
+
export const authorizeLoopback = (identity) => loopback.has(identity.remoteAddress ?? "") && identity.login === undefined
|
|
5
|
+
? Effect.succeed("local")
|
|
6
|
+
: Effect.fail(new FleetAuthorizationError({
|
|
7
|
+
actor: identity.login ?? identity.remoteAddress ?? "unknown"
|
|
8
|
+
}));
|
|
9
|
+
export const authorize = (identity, allowedUsers, allowLocal) => allowLocal
|
|
10
|
+
? authorizeLoopback(identity)
|
|
11
|
+
: Effect.fail(new FleetAuthorizationError({
|
|
12
|
+
actor: identity.login ?? identity.remoteAddress ?? "unknown"
|
|
13
|
+
}));
|
|
14
|
+
//# sourceMappingURL=auth.js.map
|
package/dist/auth.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../src/auth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAA;AAO/B,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,kBAAkB,CAAC,CAAC,CAAA;AAIlE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAC/B,QAAyB,EAC8B,EAAE,CACzD,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,IAAI,EAAE,CAAC,IAAI,QAAQ,CAAC,KAAK,KAAK,SAAS;IACxE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC;IACzB,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,IAAI,uBAAuB,CAAC;QAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,aAAa,IAAI,SAAS;KAC7D,CAAC,CACH,CAAA;AAEL,MAAM,CAAC,MAAM,SAAS,GAAG,CACvB,QAAyB,EACzB,YAAmC,EACnC,UAAmB,EACnB,EAAE,CACF,UAAU;IACR,CAAC,CAAC,iBAAiB,CAAC,QAAQ,CAAC;IAC7B,CAAC,CAAC,MAAM,CAAC,IAAI,CACX,IAAI,uBAAuB,CAAC;QAC1B,KAAK,EAAE,QAAQ,CAAC,KAAK,IAAI,QAAQ,CAAC,aAAa,IAAI,SAAS;KAC7D,CAAC,CACH,CAAA"}
|
package/dist/bin.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.d.ts","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":""}
|
package/dist/bin.js
ADDED
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { NodeRuntime, NodeServices } from "@effect/platform-node";
|
|
3
|
+
import { FleetOperationError, JobStore, loadConfiguration, makeFleetService } from "@knpkv/herdr-fleet";
|
|
4
|
+
import { Console, Effect, FileSystem, Path } from "effect";
|
|
5
|
+
import { startHttpServer } from "./http.js";
|
|
6
|
+
import { fleetConfigPath } from "./internal/config-path.js";
|
|
7
|
+
import { makeHostOperations } from "./operations.js";
|
|
8
|
+
const loadUiAssets = Effect.fn("Hostd.loadUiAssets")(function* (directory) {
|
|
9
|
+
const fileSystem = yield* FileSystem.FileSystem;
|
|
10
|
+
const paths = yield* Path.Path;
|
|
11
|
+
const stylesheet = yield* fileSystem.readFileString(paths.join(directory, "index.css"));
|
|
12
|
+
const fontNames = new Set([...stylesheet.matchAll(/url\(["']?\.\/([^"')]+\.woff2)/g)].flatMap((match) => match[1] === undefined ? [] : [match[1]]));
|
|
13
|
+
const fonts = yield* Effect.forEach([...fontNames], (name) => fileSystem.readFile(paths.join(directory, name)).pipe(Effect.map((contents) => [name, contents])));
|
|
14
|
+
return {
|
|
15
|
+
connectScript: yield* fileSystem.readFileString(paths.join(directory, "connect.js")),
|
|
16
|
+
fonts: new Map(fonts),
|
|
17
|
+
script: yield* fileSystem.readFileString(paths.join(directory, "approval.js")),
|
|
18
|
+
stylesheet,
|
|
19
|
+
worker: yield* fileSystem.readFileString(paths.join(directory, "approval-sw.js"))
|
|
20
|
+
};
|
|
21
|
+
});
|
|
22
|
+
const program = Effect.gen(function* () {
|
|
23
|
+
const paths = yield* Path.Path;
|
|
24
|
+
const configPath = yield* fleetConfigPath;
|
|
25
|
+
const config = yield* loadConfiguration(configPath);
|
|
26
|
+
const store = yield* Effect.acquireRelease(JobStore.open(paths.join(config.stateDirectory, "jobs.sqlite")), (opened) => Effect.sync(() => opened.close()));
|
|
27
|
+
const operations = yield* makeHostOperations(config);
|
|
28
|
+
const service = yield* makeFleetService({
|
|
29
|
+
approvalEnabled: config.crossHost,
|
|
30
|
+
host: config.host,
|
|
31
|
+
operations,
|
|
32
|
+
store
|
|
33
|
+
});
|
|
34
|
+
const directory = paths.dirname(yield* paths.fromFileUrl(new URL(import.meta.url)));
|
|
35
|
+
const assets = yield* loadUiAssets(directory);
|
|
36
|
+
const server = yield* Effect.acquireRelease(Effect.tryPromise({
|
|
37
|
+
try: () => startHttpServer(config, service, assets),
|
|
38
|
+
catch: (cause) => new FleetOperationError({ cause, detail: String(cause), operation: "hostd.listen" })
|
|
39
|
+
}), (running) => Effect.promise(running.close));
|
|
40
|
+
yield* Console.log(`hostd: ${config.host} local=${server.url} tailnet=${server.tailnetUrl ?? "disabled"} approval=${server.approvalUrl ?? "disabled"} serve=${server.serveUrl ?? "disabled"}`);
|
|
41
|
+
return yield* Effect.never;
|
|
42
|
+
});
|
|
43
|
+
program.pipe(Effect.scoped,
|
|
44
|
+
// The hostd process owns the Node service layer for its full lifetime.
|
|
45
|
+
// @effect-diagnostics-next-line strictEffectProvide:off
|
|
46
|
+
Effect.provide(NodeServices.layer), NodeRuntime.runMain({ disableErrorReporting: false }));
|
|
47
|
+
//# sourceMappingURL=bin.js.map
|
package/dist/bin.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bin.js","sourceRoot":"","sources":["../src/bin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-entry.d.ts","sourceRoot":"","sources":["../src/connect-entry.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"connect-entry.js","sourceRoot":"","sources":["../src/connect-entry.ts"],"names":[],"mappings":"AAAA,OAAO,6BAA6B,CAAA"}
|