@sanoma-ai/workflows 0.9.0 → 0.10.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/README.md +169 -52
- package/dist/apply-steps.js +5 -2
- package/dist/apply-steps.js.map +1 -1
- package/dist/apply.d.ts +3 -0
- package/dist/apply.js +35 -21
- package/dist/apply.js.map +1 -1
- package/dist/approvals.d.ts +1 -0
- package/dist/approvals.js +6 -1
- package/dist/approvals.js.map +1 -1
- package/dist/apps.d.ts +7 -24
- package/dist/apps.js +51 -67
- package/dist/apps.js.map +1 -1
- package/dist/ast.d.ts +9 -7
- package/dist/ast.js +2 -0
- package/dist/ast.js.map +1 -1
- package/dist/authentication.d.ts +24 -0
- package/dist/authentication.js +68 -0
- package/dist/authentication.js.map +1 -0
- package/dist/call-workflow.d.ts +5 -0
- package/dist/call-workflow.js +4 -3
- package/dist/call-workflow.js.map +1 -1
- package/dist/call.d.ts +3 -2
- package/dist/call.js +34 -7
- package/dist/call.js.map +1 -1
- package/dist/cedar.js +14 -1
- package/dist/cedar.js.map +1 -1
- package/dist/change-steps.js +7 -5
- package/dist/change-steps.js.map +1 -1
- package/dist/change.d.ts +7 -0
- package/dist/change.js +7 -0
- package/dist/change.js.map +1 -1
- package/dist/client.d.ts +10 -6
- package/dist/client.js +96 -43
- package/dist/client.js.map +1 -1
- package/dist/collection.d.ts +7 -0
- package/dist/collection.js +5 -2
- package/dist/collection.js.map +1 -1
- package/dist/config.d.ts +14 -3
- package/dist/config.js +55 -14
- package/dist/config.js.map +1 -1
- package/dist/connection.d.ts +168 -0
- package/dist/connection.js +327 -0
- package/dist/connection.js.map +1 -0
- package/dist/credentials.d.ts +7 -53
- package/dist/credentials.js +84 -247
- package/dist/credentials.js.map +1 -1
- package/dist/cucumber.d.ts +4 -2
- package/dist/cucumber.js +8 -3
- package/dist/cucumber.js.map +1 -1
- package/dist/db.js +21 -2
- package/dist/db.js.map +1 -1
- package/dist/define.d.ts +9 -2
- package/dist/define.js.map +1 -1
- package/dist/definitions.d.ts +20 -0
- package/dist/definitions.js +16 -0
- package/dist/definitions.js.map +1 -0
- package/dist/deployment-key.d.ts +2 -0
- package/dist/deployment-key.js +22 -0
- package/dist/deployment-key.js.map +1 -0
- package/dist/describe.d.ts +9 -177
- package/dist/describe.js +71 -34
- package/dist/describe.js.map +1 -1
- package/dist/description.d.ts +532 -0
- package/dist/description.js +381 -0
- package/dist/description.js.map +1 -0
- package/dist/direct.js +3 -0
- package/dist/direct.js.map +1 -1
- package/dist/drift.d.ts +1 -1
- package/dist/drift.js +1 -1
- package/dist/drift.js.map +1 -1
- package/dist/env.d.ts +2 -0
- package/dist/env.js +2 -2
- package/dist/env.js.map +1 -1
- package/dist/index.d.ts +10 -2
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/ledger.d.ts +2 -0
- package/dist/ledger.js +1 -1
- package/dist/ledger.js.map +1 -1
- package/dist/lint.d.ts +0 -9
- package/dist/lint.js +1 -16
- package/dist/lint.js.map +1 -1
- package/dist/load.d.ts +74 -0
- package/dist/load.js +357 -0
- package/dist/load.js.map +1 -0
- package/dist/lockfile.d.ts +2 -0
- package/dist/lockfile.js +8 -3
- package/dist/lockfile.js.map +1 -1
- package/dist/op.d.ts +10 -1
- package/dist/op.js +1 -1
- package/dist/op.js.map +1 -1
- package/dist/outline.js +13 -4
- package/dist/outline.js.map +1 -1
- package/dist/paths.d.ts +18 -0
- package/dist/paths.js +21 -3
- package/dist/paths.js.map +1 -1
- package/dist/plugin.d.ts +0 -11
- package/dist/plugin.js +3 -18
- package/dist/plugin.js.map +1 -1
- package/dist/policy.d.ts +2 -0
- package/dist/policy.js.map +1 -1
- package/dist/resource.d.ts +27 -4
- package/dist/resource.js +49 -4
- package/dist/resource.js.map +1 -1
- package/dist/resources.d.ts +33 -76
- package/dist/resources.js +219 -227
- package/dist/resources.js.map +1 -1
- package/dist/run.d.ts +2 -0
- package/dist/run.js.map +1 -1
- package/dist/sandbox.d.ts +1 -1
- package/dist/sandbox.js +7 -3
- package/dist/sandbox.js.map +1 -1
- package/dist/scenario.d.ts +7 -0
- package/dist/scenario.js +33 -3
- package/dist/scenario.js.map +1 -1
- package/dist/scenarios.js +7 -1
- package/dist/scenarios.js.map +1 -1
- package/dist/schema.js +8 -0
- package/dist/schema.js.map +1 -1
- package/dist/secret-store-check.d.ts +11 -0
- package/dist/secret-store-check.js +76 -0
- package/dist/secret-store-check.js.map +1 -0
- package/dist/secret-store.d.ts +106 -0
- package/dist/secret-store.js +228 -0
- package/dist/secret-store.js.map +1 -0
- package/dist/shared.d.ts +17 -11
- package/dist/shared.js +34 -7
- package/dist/shared.js.map +1 -1
- package/dist/sites.d.ts +4 -93
- package/dist/sites.js +61 -84
- package/dist/sites.js.map +1 -1
- package/dist/source.d.ts +6 -0
- package/dist/source.js +13 -0
- package/dist/source.js.map +1 -1
- package/dist/steps.d.ts +3 -1
- package/dist/steps.js.map +1 -1
- package/dist/version.d.ts +2 -1
- package/dist/version.js +2 -1
- package/dist/version.js.map +1 -1
- package/dist/wakeup-driver.js +15 -6
- package/dist/wakeup-driver.js.map +1 -1
- package/dist/worker.js +12 -8
- package/dist/worker.js.map +1 -1
- package/dist/writer.d.ts +53 -14
- package/dist/writer.js +113 -43
- package/dist/writer.js.map +1 -1
- package/oxlint.json +0 -5
- package/package.json +6 -2
- package/src/apply-steps.ts +5 -2
- package/src/apply.ts +70 -29
- package/src/approvals.ts +7 -1
- package/src/apps.ts +54 -85
- package/src/ast.ts +6 -6
- package/src/authentication.ts +74 -0
- package/src/call-workflow.ts +5 -4
- package/src/call.ts +53 -9
- package/src/cedar.ts +14 -1
- package/src/change-steps.ts +7 -4
- package/src/change.ts +10 -0
- package/src/client.ts +108 -41
- package/src/collection.ts +10 -2
- package/src/config.ts +72 -13
- package/src/connection.ts +446 -0
- package/src/credentials.ts +94 -281
- package/src/cucumber.ts +16 -3
- package/src/db.ts +21 -2
- package/src/define.ts +7 -2
- package/src/definitions.ts +31 -0
- package/src/deployment-key.ts +23 -0
- package/src/describe.ts +102 -230
- package/src/description.ts +426 -0
- package/src/direct.ts +3 -0
- package/src/drift.ts +10 -2
- package/src/env.ts +4 -2
- package/src/index.ts +42 -1
- package/src/ledger.ts +3 -1
- package/src/lint.ts +1 -16
- package/src/load.ts +437 -0
- package/src/lockfile.ts +10 -3
- package/src/op.ts +10 -1
- package/src/outline.ts +18 -5
- package/src/paths.ts +24 -2
- package/src/plugin.ts +3 -24
- package/src/policy.ts +2 -0
- package/src/resource.ts +67 -6
- package/src/resources.ts +246 -301
- package/src/run.ts +2 -0
- package/src/sandbox.ts +11 -3
- package/src/scenario.ts +45 -3
- package/src/scenarios.ts +7 -1
- package/src/schema.ts +10 -0
- package/src/secret-store-check.ts +93 -0
- package/src/secret-store.ts +314 -0
- package/src/shared.ts +35 -10
- package/src/sites.ts +70 -180
- package/src/source.ts +14 -0
- package/src/steps.ts +3 -1
- package/src/version.ts +2 -1
- package/src/wakeup-driver.ts +22 -6
- package/src/worker.ts +12 -8
- package/src/writer.ts +145 -56
- package/dist/datafile.d.ts +0 -97
- package/dist/datafile.js +0 -479
- package/dist/datafile.js.map +0 -1
- package/src/datafile.ts +0 -601
package/dist/schema.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../src/schema.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { type SecretStore } from "./secret-store.ts";
|
|
2
|
+
export interface SecretStoreCheck {
|
|
3
|
+
name: string;
|
|
4
|
+
ok: boolean;
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Destructive conformance checks on a fresh, disposable namespace. Never use a production
|
|
8
|
+
* namespace. The caller supplies a store scoped to test credentials and cleans up retained
|
|
9
|
+
* versions/namespaces according to the provider's retention rules. No result contains values.
|
|
10
|
+
*/
|
|
11
|
+
export declare function checkSecretStore(store: SecretStore, namespace: string): Promise<SecretStoreCheck[]>;
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { SecretAccess, SecretStoreError } from "./secret-store.js";
|
|
2
|
+
const assert = (condition) => {
|
|
3
|
+
if (!condition)
|
|
4
|
+
throw new Error("Conformance failure");
|
|
5
|
+
};
|
|
6
|
+
const rejects = async (run, code) => {
|
|
7
|
+
try {
|
|
8
|
+
await run();
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
assert(error instanceof SecretStoreError && error.code === code);
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
throw new Error("Expected refusal");
|
|
15
|
+
};
|
|
16
|
+
/**
|
|
17
|
+
* Destructive conformance checks on a fresh, disposable namespace. Never use a production
|
|
18
|
+
* namespace. The caller supplies a store scoped to test credentials and cleans up retained
|
|
19
|
+
* versions/namespaces according to the provider's retention rules. No result contains values.
|
|
20
|
+
*/
|
|
21
|
+
export async function checkSecretStore(store, namespace) {
|
|
22
|
+
const access = new SecretAccess({ store, namespace }, store);
|
|
23
|
+
const other = new SecretAccess({ store, namespace: `${namespace}-other` }, store);
|
|
24
|
+
const results = [];
|
|
25
|
+
const check = async (name, run) => {
|
|
26
|
+
try {
|
|
27
|
+
await run();
|
|
28
|
+
results.push({ name, ok: true });
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
results.push({ name, ok: false });
|
|
32
|
+
}
|
|
33
|
+
};
|
|
34
|
+
await check("validate and missing read", async () => {
|
|
35
|
+
await access.validate();
|
|
36
|
+
assert((await access.read("ABSENT")) === undefined);
|
|
37
|
+
});
|
|
38
|
+
await check("external ownership", async () => {
|
|
39
|
+
const external = new SecretAccess({ store, namespace, bindings: { EXISTING: { path: "existing", management: "external" } } }, store);
|
|
40
|
+
await rejects(() => external.write("EXISTING", "value", { expectedVersion: null, by: "check" }), "read_only");
|
|
41
|
+
await rejects(() => external.delete("EXISTING", { expectedVersion: "v1", by: "check" }), "read_only");
|
|
42
|
+
});
|
|
43
|
+
if (!store.capabilities.writable) {
|
|
44
|
+
await check("read-only provider", () => rejects(() => access.write("VALUE", "value", { expectedVersion: null, by: "check" }), "read_only"));
|
|
45
|
+
return results;
|
|
46
|
+
}
|
|
47
|
+
if (store.capabilities.conditionalWrites === "none") {
|
|
48
|
+
await check("unsupported conditional writes", () => rejects(() => access.ensure("VALUE", () => "value"), "unsupported"));
|
|
49
|
+
return results;
|
|
50
|
+
}
|
|
51
|
+
await check("concurrent create and namespace separation", async () => {
|
|
52
|
+
const values = await Promise.all(Array.from({ length: 8 }, (_, i) => access.ensure("RACE", () => String(i))));
|
|
53
|
+
assert(new Set(values).size === 1);
|
|
54
|
+
assert((await other.get("RACE")) === undefined);
|
|
55
|
+
});
|
|
56
|
+
await check("replace rejects stale versions", async () => {
|
|
57
|
+
const one = await access.write("REPLACE", "one", { expectedVersion: null, by: "check" });
|
|
58
|
+
const two = await access.write("REPLACE", "two", { expectedVersion: one.version, by: "check" });
|
|
59
|
+
assert(one.version !== two.version);
|
|
60
|
+
await rejects(() => access.write("REPLACE", "stale", { expectedVersion: one.version, by: "check" }), "conflict");
|
|
61
|
+
assert((await access.get("REPLACE")) === "two");
|
|
62
|
+
});
|
|
63
|
+
await check("UTF-8 size rejection", () => rejects(() => access.write("OVERSIZE", "x".repeat(store.capabilities.maxBytes + 1), { expectedVersion: null, by: "check" }), "too_large"));
|
|
64
|
+
await check("deletion semantics", async () => {
|
|
65
|
+
const one = await access.write("DELETE", "one", { expectedVersion: null, by: "check" });
|
|
66
|
+
if (store.capabilities.deletion === "unsupported") {
|
|
67
|
+
await rejects(() => access.delete("DELETE", { expectedVersion: one.version, by: "check" }), "unsupported");
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
await rejects(() => access.delete("DELETE", { expectedVersion: "incorrect", by: "check" }), "conflict");
|
|
71
|
+
await access.delete("DELETE", { expectedVersion: one.version, by: "check" });
|
|
72
|
+
assert((await access.read("DELETE")) === undefined);
|
|
73
|
+
});
|
|
74
|
+
return results;
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=secret-store-check.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-store-check.js","sourceRoot":"","sources":["../src/secret-store-check.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/** Opaque values belong only in trusted runtime code, never workflow history or descriptions. */
|
|
2
|
+
export interface SecretValue {
|
|
3
|
+
value: string;
|
|
4
|
+
version: string;
|
|
5
|
+
updatedBy?: string;
|
|
6
|
+
updatedAt?: string;
|
|
7
|
+
}
|
|
8
|
+
/** A store instance already authenticates as one deployment. A namespace is not tenant authorization. */
|
|
9
|
+
export interface SecretAddress {
|
|
10
|
+
namespace: string;
|
|
11
|
+
path: string;
|
|
12
|
+
}
|
|
13
|
+
export interface SecretStoreCapabilities {
|
|
14
|
+
writable: boolean;
|
|
15
|
+
/** UTF-8 bytes, including any serialized credential bundle. */
|
|
16
|
+
maxBytes: number;
|
|
17
|
+
/** `coordinated` covers cooperating Sanoma writers only; `none` cannot ensure or replace safely. */
|
|
18
|
+
conditionalWrites: "atomic" | "coordinated" | "none";
|
|
19
|
+
deletion: "destroy" | "soft-delete" | "unsupported";
|
|
20
|
+
changeDetection: "read" | "watch";
|
|
21
|
+
}
|
|
22
|
+
export type SecretStoreErrorCode = "invalid_configuration" | "unavailable" | "denied" | "conflict" | "read_only" | "unsupported" | "too_large" | "invalid_value";
|
|
23
|
+
/** Intentionally carries no provider message, cause, path or value. */
|
|
24
|
+
export declare class SecretStoreError extends Error {
|
|
25
|
+
readonly code: SecretStoreErrorCode;
|
|
26
|
+
readonly retryable: boolean;
|
|
27
|
+
constructor(code: SecretStoreErrorCode);
|
|
28
|
+
}
|
|
29
|
+
export interface SecretStore {
|
|
30
|
+
/** Non-secret adapter identifier, e.g. `postgres` or `aws-secrets-manager`. */
|
|
31
|
+
readonly id: string;
|
|
32
|
+
readonly capabilities: Readonly<SecretStoreCapabilities>;
|
|
33
|
+
/** Check scoped access without listing an account or returning secret material. */
|
|
34
|
+
validate(namespace: string): Promise<void>;
|
|
35
|
+
read(address: SecretAddress): Promise<SecretValue | undefined>;
|
|
36
|
+
/** null means create only. A string means replace only that exact current version. */
|
|
37
|
+
write(address: SecretAddress, value: string, options: {
|
|
38
|
+
expectedVersion: string | null;
|
|
39
|
+
by: string;
|
|
40
|
+
}): Promise<SecretValue>;
|
|
41
|
+
/** Delete only the exact version; report the retention behavior advertised in capabilities. */
|
|
42
|
+
delete(address: SecretAddress, options: {
|
|
43
|
+
expectedVersion: string;
|
|
44
|
+
by: string;
|
|
45
|
+
}): Promise<void>;
|
|
46
|
+
}
|
|
47
|
+
export type SecretBinding = {
|
|
48
|
+
path: string;
|
|
49
|
+
management: "sanoma" | "external";
|
|
50
|
+
env?: never;
|
|
51
|
+
bootstrap?: never;
|
|
52
|
+
} | {
|
|
53
|
+
env: string;
|
|
54
|
+
management?: "external";
|
|
55
|
+
path?: never;
|
|
56
|
+
bootstrap?: never;
|
|
57
|
+
} | {
|
|
58
|
+
bootstrap: "SANOMA_SIGNING_KEY" | "SANOMA_SECRETS_KEY";
|
|
59
|
+
management?: "external";
|
|
60
|
+
env?: never;
|
|
61
|
+
path?: never;
|
|
62
|
+
};
|
|
63
|
+
export interface SecretConfiguration {
|
|
64
|
+
/** Omitted: built-in encrypted Postgres, supplied by the runtime. */
|
|
65
|
+
store?: SecretStore;
|
|
66
|
+
/** Defaults to `default`. Choose a distinct namespace and identity for each deployment. */
|
|
67
|
+
namespace?: string;
|
|
68
|
+
/** Names without a binding resolve to the same name in this namespace. */
|
|
69
|
+
bindings?: Readonly<Record<string, SecretBinding>>;
|
|
70
|
+
}
|
|
71
|
+
export interface SecretLocation {
|
|
72
|
+
store: string;
|
|
73
|
+
namespace: string;
|
|
74
|
+
path: string;
|
|
75
|
+
management: "sanoma" | "external";
|
|
76
|
+
}
|
|
77
|
+
/** Provider failures are sanitized even when an SDK throws a credential-bearing response. */
|
|
78
|
+
export declare function secretStoreCall<T>(run: () => Promise<T>): Promise<T>;
|
|
79
|
+
export declare function checkSecretConfiguration(config: SecretConfiguration): void;
|
|
80
|
+
/** Enforces binding ownership before calling a provider; preserves the drivers' get/ensure interface. */
|
|
81
|
+
export declare class SecretAccess {
|
|
82
|
+
readonly store: SecretStore;
|
|
83
|
+
readonly namespace: string;
|
|
84
|
+
private readonly bindings;
|
|
85
|
+
private readonly env;
|
|
86
|
+
constructor(config: SecretConfiguration, defaultStore: SecretStore, env?: (name: string) => string | undefined);
|
|
87
|
+
location(name: string): SecretLocation;
|
|
88
|
+
validate(): Promise<void>;
|
|
89
|
+
read(name: string): Promise<SecretValue | undefined>;
|
|
90
|
+
get(name: string): Promise<string | undefined>;
|
|
91
|
+
write(name: string, value: string, options: {
|
|
92
|
+
expectedVersion: string | null;
|
|
93
|
+
by: string;
|
|
94
|
+
}): Promise<SecretValue>;
|
|
95
|
+
delete(name: string, options: {
|
|
96
|
+
expectedVersion: string;
|
|
97
|
+
by: string;
|
|
98
|
+
}): Promise<void>;
|
|
99
|
+
ensure(name: string, make: () => string): Promise<string>;
|
|
100
|
+
private writable;
|
|
101
|
+
}
|
|
102
|
+
export declare function memorySecretStore(options?: {
|
|
103
|
+
maxBytes?: number;
|
|
104
|
+
writable?: boolean;
|
|
105
|
+
deletion?: "destroy" | "soft-delete";
|
|
106
|
+
}): SecretStore;
|
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
import { deploymentKey } from "./deployment-key.js";
|
|
2
|
+
/** Intentionally carries no provider message, cause, path or value. */
|
|
3
|
+
export class SecretStoreError extends Error {
|
|
4
|
+
code;
|
|
5
|
+
retryable;
|
|
6
|
+
constructor(code) {
|
|
7
|
+
super(`Secret store: ${code}`);
|
|
8
|
+
this.name = "SecretStoreError";
|
|
9
|
+
this.code = code;
|
|
10
|
+
this.retryable = code === "unavailable";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const errorCodes = new Set([
|
|
14
|
+
"invalid_configuration",
|
|
15
|
+
"unavailable",
|
|
16
|
+
"denied",
|
|
17
|
+
"conflict",
|
|
18
|
+
"read_only",
|
|
19
|
+
"unsupported",
|
|
20
|
+
"too_large",
|
|
21
|
+
"invalid_value",
|
|
22
|
+
]);
|
|
23
|
+
const storeError = (error) => typeof error === "object" &&
|
|
24
|
+
error !== null &&
|
|
25
|
+
error.name === "SecretStoreError" &&
|
|
26
|
+
errorCodes.has(error.code);
|
|
27
|
+
/** Provider failures are sanitized even when an SDK throws a credential-bearing response. */
|
|
28
|
+
export async function secretStoreCall(run) {
|
|
29
|
+
try {
|
|
30
|
+
return await run();
|
|
31
|
+
}
|
|
32
|
+
catch (error) {
|
|
33
|
+
if (storeError(error))
|
|
34
|
+
throw new SecretStoreError(error.code);
|
|
35
|
+
throw new SecretStoreError("unavailable");
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
const namePattern = /^[A-Z][A-Z0-9_]*$/;
|
|
39
|
+
const environmentPattern = /^[A-Za-z_][A-Za-z0-9_]*$/;
|
|
40
|
+
const nonempty = (value) => typeof value === "string" && value.trim().length > 0 && !value.includes("\0");
|
|
41
|
+
/** Structural validation only: no secret reads, provider calls or environment access. */
|
|
42
|
+
const invalid = () => {
|
|
43
|
+
throw new SecretStoreError("invalid_configuration");
|
|
44
|
+
};
|
|
45
|
+
export function checkSecretConfiguration(config) {
|
|
46
|
+
if (!config || typeof config !== "object" || Array.isArray(config))
|
|
47
|
+
invalid();
|
|
48
|
+
if (config.namespace !== undefined && !nonempty(config.namespace))
|
|
49
|
+
invalid();
|
|
50
|
+
if (config.store !== undefined) {
|
|
51
|
+
const s = config.store;
|
|
52
|
+
const c = s?.capabilities;
|
|
53
|
+
if (!nonempty(s?.id) ||
|
|
54
|
+
!/^[a-z][a-z0-9-]{0,63}$/.test(s.id) ||
|
|
55
|
+
!c ||
|
|
56
|
+
typeof c.writable !== "boolean" ||
|
|
57
|
+
!Number.isSafeInteger(c.maxBytes) ||
|
|
58
|
+
c.maxBytes < 1 ||
|
|
59
|
+
!["atomic", "coordinated", "none"].includes(c.conditionalWrites) ||
|
|
60
|
+
!["destroy", "soft-delete", "unsupported"].includes(c.deletion) ||
|
|
61
|
+
!["read", "watch"].includes(c.changeDetection) ||
|
|
62
|
+
[s.validate, s.read, s.write, s.delete].some((fn) => typeof fn !== "function"))
|
|
63
|
+
invalid();
|
|
64
|
+
}
|
|
65
|
+
if (config.bindings !== undefined &&
|
|
66
|
+
(!config.bindings || typeof config.bindings !== "object" || Array.isArray(config.bindings)))
|
|
67
|
+
invalid();
|
|
68
|
+
for (const [name, b] of Object.entries(config.bindings ?? {})) {
|
|
69
|
+
if (!namePattern.test(name) || !b || typeof b !== "object")
|
|
70
|
+
invalid();
|
|
71
|
+
if (["SANOMA_SIGNING_KEY", "SANOMA_SECRETS_KEY"].includes(name) && !("env" in b) && !("bootstrap" in b))
|
|
72
|
+
invalid();
|
|
73
|
+
if ("bootstrap" in b) {
|
|
74
|
+
if (!["SANOMA_SIGNING_KEY", "SANOMA_SECRETS_KEY"].includes(b.bootstrap) ||
|
|
75
|
+
b.path !== undefined ||
|
|
76
|
+
b.env !== undefined ||
|
|
77
|
+
(b.management !== undefined && b.management !== "external"))
|
|
78
|
+
invalid();
|
|
79
|
+
}
|
|
80
|
+
else if ("env" in b) {
|
|
81
|
+
if (typeof b.env !== "string" ||
|
|
82
|
+
!environmentPattern.test(b.env) ||
|
|
83
|
+
b.path !== undefined ||
|
|
84
|
+
(b.management !== undefined && b.management !== "external"))
|
|
85
|
+
invalid();
|
|
86
|
+
}
|
|
87
|
+
else if (!nonempty(b.path) || !["sanoma", "external"].includes(b.management))
|
|
88
|
+
invalid();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
/** Enforces binding ownership before calling a provider; preserves the drivers' get/ensure interface. */
|
|
92
|
+
export class SecretAccess {
|
|
93
|
+
store;
|
|
94
|
+
namespace;
|
|
95
|
+
bindings;
|
|
96
|
+
env;
|
|
97
|
+
constructor(config, defaultStore, env = (name) => process.env[name]) {
|
|
98
|
+
this.env = env;
|
|
99
|
+
checkSecretConfiguration(config);
|
|
100
|
+
this.store = config.store ?? defaultStore;
|
|
101
|
+
checkSecretConfiguration({ store: this.store });
|
|
102
|
+
this.namespace = config.namespace ?? "default";
|
|
103
|
+
this.bindings = Object.fromEntries(Object.entries(config.bindings ?? {}).map(([name, binding]) => [name, { ...binding }]));
|
|
104
|
+
}
|
|
105
|
+
location(name) {
|
|
106
|
+
if (!namePattern.test(name))
|
|
107
|
+
throw new SecretStoreError("invalid_configuration");
|
|
108
|
+
const binding = Object.hasOwn(this.bindings, name) ? this.bindings[name] : undefined;
|
|
109
|
+
if (binding?.bootstrap !== undefined)
|
|
110
|
+
return { store: "bootstrap", namespace: "", path: binding.bootstrap, management: "external" };
|
|
111
|
+
if (["SANOMA_SIGNING_KEY", "SANOMA_SECRETS_KEY"].includes(name) && !binding)
|
|
112
|
+
throw new SecretStoreError("invalid_configuration");
|
|
113
|
+
if (binding?.env !== undefined)
|
|
114
|
+
return { store: "environment", namespace: "", path: binding.env, management: "external" };
|
|
115
|
+
return {
|
|
116
|
+
store: this.store.id,
|
|
117
|
+
namespace: this.namespace,
|
|
118
|
+
path: binding?.path ?? name,
|
|
119
|
+
management: binding?.management ?? "sanoma",
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
async validate() {
|
|
123
|
+
await secretStoreCall(() => this.store.validate(this.namespace));
|
|
124
|
+
}
|
|
125
|
+
async read(name) {
|
|
126
|
+
const location = this.location(name);
|
|
127
|
+
if (location.store === "bootstrap" && location.namespace === "") {
|
|
128
|
+
const value = deploymentKey(location.path).toString("base64");
|
|
129
|
+
return { value, version: "bootstrap" };
|
|
130
|
+
}
|
|
131
|
+
if (location.store === "environment" && location.namespace === "") {
|
|
132
|
+
const value = this.env(location.path);
|
|
133
|
+
// No content-derived version (which would expose a hash of a low-entropy password).
|
|
134
|
+
return value === undefined ? undefined : { value, version: "environment" };
|
|
135
|
+
}
|
|
136
|
+
return secretStoreCall(() => this.store.read(location));
|
|
137
|
+
}
|
|
138
|
+
async get(name) {
|
|
139
|
+
return (await this.read(name))?.value;
|
|
140
|
+
}
|
|
141
|
+
async write(name, value, options) {
|
|
142
|
+
const location = this.writable(name);
|
|
143
|
+
if (Buffer.byteLength(value, "utf8") > this.store.capabilities.maxBytes)
|
|
144
|
+
throw new SecretStoreError("too_large");
|
|
145
|
+
return secretStoreCall(() => this.store.write(location, value, options));
|
|
146
|
+
}
|
|
147
|
+
async delete(name, options) {
|
|
148
|
+
const location = this.writable(name);
|
|
149
|
+
if (this.store.capabilities.deletion === "unsupported")
|
|
150
|
+
throw new SecretStoreError("unsupported");
|
|
151
|
+
await secretStoreCall(() => this.store.delete(location, options));
|
|
152
|
+
}
|
|
153
|
+
async ensure(name, make) {
|
|
154
|
+
const stored = await this.read(name);
|
|
155
|
+
if (stored)
|
|
156
|
+
return stored.value;
|
|
157
|
+
this.writable(name);
|
|
158
|
+
try {
|
|
159
|
+
return (await this.write(name, make(), { expectedVersion: null, by: "sanoma" })).value;
|
|
160
|
+
}
|
|
161
|
+
catch (error) {
|
|
162
|
+
if (!storeError(error) || error.code !== "conflict")
|
|
163
|
+
throw error;
|
|
164
|
+
const winner = await this.read(name);
|
|
165
|
+
if (winner)
|
|
166
|
+
return winner.value;
|
|
167
|
+
throw error;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
writable(name) {
|
|
171
|
+
const location = this.location(name);
|
|
172
|
+
if (location.management === "external" || !this.store.capabilities.writable)
|
|
173
|
+
throw new SecretStoreError("read_only");
|
|
174
|
+
if (this.store.capabilities.conditionalWrites === "none")
|
|
175
|
+
throw new SecretStoreError("unsupported");
|
|
176
|
+
return location;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
/** Reference provider for tests. `atomic` is scoped to this shared in-process instance only. */
|
|
180
|
+
const key = (a) => JSON.stringify([a.namespace, a.path]);
|
|
181
|
+
export function memorySecretStore(options = {}) {
|
|
182
|
+
const values = new Map();
|
|
183
|
+
const retained = new Map();
|
|
184
|
+
let generation = 0;
|
|
185
|
+
const capabilities = {
|
|
186
|
+
writable: options.writable ?? true,
|
|
187
|
+
maxBytes: options.maxBytes ?? 65_536,
|
|
188
|
+
conditionalWrites: "atomic",
|
|
189
|
+
deletion: options.deletion ?? "destroy",
|
|
190
|
+
changeDetection: "read",
|
|
191
|
+
};
|
|
192
|
+
const mutable = () => {
|
|
193
|
+
if (!capabilities.writable)
|
|
194
|
+
throw new SecretStoreError("read_only");
|
|
195
|
+
};
|
|
196
|
+
return {
|
|
197
|
+
id: "memory",
|
|
198
|
+
capabilities: Object.freeze(capabilities),
|
|
199
|
+
async validate(namespace) {
|
|
200
|
+
if (!nonempty(namespace))
|
|
201
|
+
throw new SecretStoreError("invalid_configuration");
|
|
202
|
+
},
|
|
203
|
+
async read(address) {
|
|
204
|
+
const value = values.get(key(address));
|
|
205
|
+
return value && { ...value };
|
|
206
|
+
},
|
|
207
|
+
async write(address, value, { expectedVersion, by }) {
|
|
208
|
+
mutable();
|
|
209
|
+
if (Buffer.byteLength(value, "utf8") > capabilities.maxBytes)
|
|
210
|
+
throw new SecretStoreError("too_large");
|
|
211
|
+
const current = values.get(key(address));
|
|
212
|
+
if ((current?.version ?? null) !== expectedVersion)
|
|
213
|
+
throw new SecretStoreError("conflict");
|
|
214
|
+
const stored = { value, version: String(++generation), updatedBy: by, updatedAt: new Date().toISOString() };
|
|
215
|
+
values.set(key(address), stored);
|
|
216
|
+
return { ...stored };
|
|
217
|
+
},
|
|
218
|
+
async delete(address, { expectedVersion }) {
|
|
219
|
+
mutable();
|
|
220
|
+
if (values.get(key(address))?.version !== expectedVersion)
|
|
221
|
+
throw new SecretStoreError("conflict");
|
|
222
|
+
if (capabilities.deletion === "soft-delete")
|
|
223
|
+
retained.set(expectedVersion, values.get(key(address)));
|
|
224
|
+
values.delete(key(address));
|
|
225
|
+
},
|
|
226
|
+
};
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=secret-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"secret-store.js","sourceRoot":"","sources":["../src/secret-store.ts"],"names":[],"mappings":"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"}
|
package/dist/shared.d.ts
CHANGED
|
@@ -4,16 +4,17 @@ import type { ApprovalState, Approver, Principal } from "./define.ts";
|
|
|
4
4
|
import type { OpEntry, WorkflowEntry } from "./describe.ts";
|
|
5
5
|
import type { LedgerRecord } from "./ledger.ts";
|
|
6
6
|
import type { PreviewRequest } from "./policy.ts";
|
|
7
|
-
import type { DeclaredResource, ResourceProblem } from "./
|
|
7
|
+
import type { DeclaredResource, ResourceProblem } from "./description.ts";
|
|
8
8
|
import type { OutlineNode } from "./outline.ts";
|
|
9
9
|
export type { Declared, Declaring, FieldReference, References, Resource, ResourceFields, ResourceSpec, } from "./resource.ts";
|
|
10
|
-
export type { DeclaredResource, ResourceProblem } from "./
|
|
10
|
+
export type { At, DeclaredResource, ResourceProblem } from "./description.ts";
|
|
11
11
|
export type { DriftField, DriftReport, DriftResult, DriftStatus } from "./drift.ts";
|
|
12
12
|
export type { ApplyPlan, ApplyReport, ApplyResult, PlanAnswer, PlanStep } from "./apply.ts";
|
|
13
13
|
export type { CredentialStatus } from "./env.ts";
|
|
14
14
|
export type { ChangeDeploy, ChangeEvent, ChangeFacts, ChangeReport, ChangeState, ChangeVerified } from "./change.ts";
|
|
15
15
|
export type { AvailableApp, AvailableApps } from "./apps-list.ts";
|
|
16
16
|
export * from "./claims.ts";
|
|
17
|
+
export { defineSite, type SiteDefinition } from "./definitions.ts";
|
|
17
18
|
/**
|
|
18
19
|
* What a `ctx.sleep` without a `{ name }` is called, in its outline node and its ledger record
|
|
19
20
|
* (`name`); a name given may not be it.
|
|
@@ -271,18 +272,23 @@ export declare function fitsOp(pattern: string, op: string): boolean;
|
|
|
271
272
|
export declare const childLists: (node: OutlineNode) => OutlineNode[][];
|
|
272
273
|
/** Every node of an outline, nested ones included, in order. */
|
|
273
274
|
export declare function flatten(nodes: readonly OutlineNode[]): OutlineNode[];
|
|
274
|
-
/**
|
|
275
|
+
/**
|
|
276
|
+
* Where a problem is, `file:line:column`, `file#export` or `file`; undefined for one that is the
|
|
277
|
+
* config's, with no file.
|
|
278
|
+
*/
|
|
275
279
|
export declare const problemAt: (p: ResourceProblem) => string | undefined;
|
|
276
280
|
/**
|
|
277
|
-
* A problem as one line: `file:line:column: message`,
|
|
278
|
-
* the message alone without a file.
|
|
281
|
+
* A problem as one line: `file:line:column: message`, `file#export: message` or `file: message`
|
|
282
|
+
* without a position, or the message alone without a file.
|
|
283
|
+
*/
|
|
284
|
+
export declare function problemLine(p: ResourceProblem): string;
|
|
285
|
+
/**
|
|
286
|
+
* Where the export `name` (`default` for the default export) is in a file's text, as UTF-16
|
|
287
|
+
* offsets: from its `export` to the next `export`, `import`, `const` or comment at the start of a
|
|
288
|
+
* line, or the end, less trailing blank space. Read from the text alone, for highlighting it; undefined
|
|
289
|
+
* when no line starts it.
|
|
279
290
|
*/
|
|
280
|
-
export declare function
|
|
281
|
-
file?: string;
|
|
282
|
-
line?: number;
|
|
283
|
-
column?: number;
|
|
284
|
-
message: string;
|
|
285
|
-
}): string;
|
|
291
|
+
export declare function exportSpan(text: string, name: string): [number, number] | undefined;
|
|
286
292
|
/** A warning as one line, as `problemLine` with `warning: ` before its message: what is worth fixing but not wrong. */
|
|
287
293
|
export declare const warningLine: (p: Parameters<typeof problemLine>[0]) => string;
|
|
288
294
|
/**
|
package/dist/shared.js
CHANGED
|
@@ -3,6 +3,8 @@
|
|
|
3
3
|
// same functions, so a page answers these questions the way a run does.
|
|
4
4
|
// Sanoma's claims, data (`sanoma/claims` re-exports them).
|
|
5
5
|
export * from "./claims.js";
|
|
6
|
+
// A site's `site.ts` declares itself with it (`sanoma/site` calls it, typing its icon).
|
|
7
|
+
export { defineSite } from "./definitions.js";
|
|
6
8
|
/**
|
|
7
9
|
* What a `ctx.sleep` without a `{ name }` is called, in its outline node and its ledger record
|
|
8
10
|
* (`name`); a name given may not be it.
|
|
@@ -343,16 +345,41 @@ export const childLists = (node) => {
|
|
|
343
345
|
export function flatten(nodes) {
|
|
344
346
|
return nodes.flatMap((node) => [node, ...flatten(childLists(node).flat())]);
|
|
345
347
|
}
|
|
346
|
-
/** Where a data-file problem is, `file:line:column`; undefined for one that is the config's, with no file. */
|
|
347
|
-
export const problemAt = (p) => p.file === undefined ? undefined : `${p.file}:${p.line}:${p.column}`;
|
|
348
348
|
/**
|
|
349
|
-
*
|
|
350
|
-
*
|
|
349
|
+
* Where a problem is, `file:line:column`, `file#export` or `file`; undefined for one that is the
|
|
350
|
+
* config's, with no file.
|
|
351
351
|
*/
|
|
352
|
-
export
|
|
352
|
+
export const problemAt = (p) => {
|
|
353
353
|
if (p.file === undefined)
|
|
354
|
-
return
|
|
355
|
-
|
|
354
|
+
return undefined;
|
|
355
|
+
if (p.line !== undefined)
|
|
356
|
+
return `${p.file}:${p.line}:${p.column ?? 1}`;
|
|
357
|
+
return p.export === undefined ? p.file : `${p.file}#${p.export}`;
|
|
358
|
+
};
|
|
359
|
+
/**
|
|
360
|
+
* A problem as one line: `file:line:column: message`, `file#export: message` or `file: message`
|
|
361
|
+
* without a position, or the message alone without a file.
|
|
362
|
+
*/
|
|
363
|
+
export function problemLine(p) {
|
|
364
|
+
const at = problemAt(p);
|
|
365
|
+
return at === undefined ? p.message : `${at}: ${p.message}`;
|
|
366
|
+
}
|
|
367
|
+
/**
|
|
368
|
+
* Where the export `name` (`default` for the default export) is in a file's text, as UTF-16
|
|
369
|
+
* offsets: from its `export` to the next `export`, `import`, `const` or comment at the start of a
|
|
370
|
+
* line, or the end, less trailing blank space. Read from the text alone, for highlighting it; undefined
|
|
371
|
+
* when no line starts it.
|
|
372
|
+
*/
|
|
373
|
+
export function exportSpan(text, name) {
|
|
374
|
+
const declared = name === "default" ? "default" : `const\\s+${name.replaceAll("$", "\\$")}`;
|
|
375
|
+
const start = new RegExp(`^export\\s+${declared}(?![\\w$])`, "m").exec(text);
|
|
376
|
+
if (!start)
|
|
377
|
+
return undefined;
|
|
378
|
+
const after = start.index + start[0].length;
|
|
379
|
+
// A comment at the start of a line is the next declaration's.
|
|
380
|
+
const next = /^(?:(?:export|import|const)\b|\/[/*])/m.exec(text.slice(after));
|
|
381
|
+
const end = next ? after + next.index : text.length;
|
|
382
|
+
return [start.index, start.index + text.slice(start.index, end).trimEnd().length];
|
|
356
383
|
}
|
|
357
384
|
/** A warning as one line, as `problemLine` with `warning: ` before its message: what is worth fixing but not wrong. */
|
|
358
385
|
export const warningLine = (p) => problemLine({ ...p, message: `warning: ${p.message}` });
|