@emilia-protocol/gate 0.11.0 → 0.13.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/CHANGELOG.md +58 -0
- package/README.md +252 -0
- package/action-control-manifest.js +3 -268
- package/action-escrow-custodian.js +3 -394
- package/action-escrow-evidence.js +3 -858
- package/action-escrow-package.js +3 -1668
- package/action-escrow-postgres.js +3 -337
- package/action-escrow-state.js +3 -396
- package/action-escrow-verifiers.js +3 -331
- package/action-escrow.js +3 -2447
- package/action-packs.js +3 -140
- package/adapters/_kit.js +3 -104
- package/adapters/aws.js +3 -108
- package/adapters/cloudflare.js +3 -54
- package/adapters/gcp.js +3 -70
- package/adapters/github.js +3 -109
- package/adapters/jira.js +3 -55
- package/adapters/k8s.js +3 -70
- package/adapters/linear.js +3 -55
- package/adapters/salesforce.js +3 -55
- package/adapters/stripe.js +3 -81
- package/adapters/supabase.js +3 -121
- package/adapters/terraform.js +3 -59
- package/adapters/vercel.js +3 -84
- package/aec-execution.js +3 -312
- package/breakglass.js +3 -582
- package/capability-receipt.js +4 -0
- package/cf1-conformance.js +3 -106
- package/challenge-store.js +3 -69
- package/control-plane.js +3 -340
- package/coverage.js +3 -721
- package/demo.mjs +1 -1
- package/deployment-attestation.js +3 -247
- package/dist/action-control-manifest.d.ts +82 -0
- package/dist/action-control-manifest.d.ts.map +1 -0
- package/dist/action-control-manifest.js +422 -0
- package/dist/action-control-manifest.js.map +1 -0
- package/dist/action-escrow-custodian.d.ts +74 -0
- package/dist/action-escrow-custodian.d.ts.map +1 -0
- package/dist/action-escrow-custodian.js +363 -0
- package/dist/action-escrow-custodian.js.map +1 -0
- package/dist/action-escrow-evidence.d.ts +130 -0
- package/dist/action-escrow-evidence.d.ts.map +1 -0
- package/dist/action-escrow-evidence.js +1012 -0
- package/dist/action-escrow-evidence.js.map +1 -0
- package/dist/action-escrow-package.d.ts +10 -0
- package/dist/action-escrow-package.d.ts.map +1 -0
- package/dist/action-escrow-package.js +1583 -0
- package/dist/action-escrow-package.js.map +1 -0
- package/dist/action-escrow-postgres.d.ts +62 -0
- package/dist/action-escrow-postgres.d.ts.map +1 -0
- package/dist/action-escrow-postgres.js +339 -0
- package/dist/action-escrow-postgres.js.map +1 -0
- package/dist/action-escrow-state.d.ts +141 -0
- package/dist/action-escrow-state.d.ts.map +1 -0
- package/dist/action-escrow-state.js +413 -0
- package/dist/action-escrow-state.js.map +1 -0
- package/dist/action-escrow-verifiers.d.ts +65 -0
- package/dist/action-escrow-verifiers.d.ts.map +1 -0
- package/dist/action-escrow-verifiers.js +421 -0
- package/dist/action-escrow-verifiers.js.map +1 -0
- package/dist/action-escrow.d.ts +112 -0
- package/dist/action-escrow.d.ts.map +1 -0
- package/dist/action-escrow.js +2661 -0
- package/dist/action-escrow.js.map +1 -0
- package/dist/action-packs.d.ts +54 -0
- package/dist/action-packs.d.ts.map +1 -0
- package/dist/action-packs.js +143 -0
- package/dist/action-packs.js.map +1 -0
- package/dist/adapters/_kit.d.ts +50 -0
- package/dist/adapters/_kit.d.ts.map +1 -0
- package/dist/adapters/_kit.js +98 -0
- package/dist/adapters/_kit.js.map +1 -0
- package/dist/adapters/aws.d.ts +158 -0
- package/dist/adapters/aws.d.ts.map +1 -0
- package/dist/adapters/aws.js +136 -0
- package/dist/adapters/aws.js.map +1 -0
- package/dist/adapters/cloudflare.d.ts +116 -0
- package/dist/adapters/cloudflare.d.ts.map +1 -0
- package/dist/adapters/cloudflare.js +75 -0
- package/dist/adapters/cloudflare.js.map +1 -0
- package/dist/adapters/gcp.d.ts +139 -0
- package/dist/adapters/gcp.d.ts.map +1 -0
- package/dist/adapters/gcp.js +69 -0
- package/dist/adapters/gcp.js.map +1 -0
- package/dist/adapters/github.d.ts +123 -0
- package/dist/adapters/github.d.ts.map +1 -0
- package/dist/adapters/github.js +105 -0
- package/dist/adapters/github.js.map +1 -0
- package/dist/adapters/jira.d.ts +109 -0
- package/dist/adapters/jira.d.ts.map +1 -0
- package/dist/adapters/jira.js +54 -0
- package/dist/adapters/jira.js.map +1 -0
- package/dist/adapters/k8s.d.ts +139 -0
- package/dist/adapters/k8s.d.ts.map +1 -0
- package/dist/adapters/k8s.js +69 -0
- package/dist/adapters/k8s.js.map +1 -0
- package/dist/adapters/linear.d.ts +109 -0
- package/dist/adapters/linear.d.ts.map +1 -0
- package/dist/adapters/linear.js +54 -0
- package/dist/adapters/linear.js.map +1 -0
- package/dist/adapters/salesforce.d.ts +109 -0
- package/dist/adapters/salesforce.d.ts.map +1 -0
- package/dist/adapters/salesforce.js +54 -0
- package/dist/adapters/salesforce.js.map +1 -0
- package/dist/adapters/stripe.d.ts +116 -0
- package/dist/adapters/stripe.d.ts.map +1 -0
- package/dist/adapters/stripe.js +77 -0
- package/dist/adapters/stripe.js.map +1 -0
- package/dist/adapters/supabase.d.ts +127 -0
- package/dist/adapters/supabase.d.ts.map +1 -0
- package/dist/adapters/supabase.js +112 -0
- package/dist/adapters/supabase.js.map +1 -0
- package/dist/adapters/terraform.d.ts +109 -0
- package/dist/adapters/terraform.d.ts.map +1 -0
- package/dist/adapters/terraform.js +58 -0
- package/dist/adapters/terraform.js.map +1 -0
- package/dist/adapters/vercel.d.ts +114 -0
- package/dist/adapters/vercel.d.ts.map +1 -0
- package/dist/adapters/vercel.js +81 -0
- package/dist/adapters/vercel.js.map +1 -0
- package/dist/aec-execution.d.ts +107 -0
- package/dist/aec-execution.d.ts.map +1 -0
- package/dist/aec-execution.js +334 -0
- package/dist/aec-execution.js.map +1 -0
- package/dist/breakglass.d.ts +205 -0
- package/dist/breakglass.d.ts.map +1 -0
- package/dist/breakglass.js +627 -0
- package/dist/breakglass.js.map +1 -0
- package/dist/capability-receipt.d.ts +601 -0
- package/dist/capability-receipt.d.ts.map +1 -0
- package/dist/capability-receipt.js +1177 -0
- package/dist/capability-receipt.js.map +1 -0
- package/dist/cf1-conformance.d.ts +83 -0
- package/dist/cf1-conformance.d.ts.map +1 -0
- package/dist/cf1-conformance.js +94 -0
- package/dist/cf1-conformance.js.map +1 -0
- package/dist/challenge-store.d.ts +20 -0
- package/dist/challenge-store.d.ts.map +1 -0
- package/dist/challenge-store.js +62 -0
- package/dist/challenge-store.js.map +1 -0
- package/dist/control-plane.d.ts +136 -0
- package/dist/control-plane.d.ts.map +1 -0
- package/dist/control-plane.js +349 -0
- package/dist/control-plane.js.map +1 -0
- package/dist/coverage.d.ts +156 -0
- package/dist/coverage.d.ts.map +1 -0
- package/dist/coverage.js +768 -0
- package/dist/coverage.js.map +1 -0
- package/dist/deployment-attestation.d.ts +93 -0
- package/dist/deployment-attestation.d.ts.map +1 -0
- package/dist/deployment-attestation.js +262 -0
- package/dist/deployment-attestation.js.map +1 -0
- package/dist/eg1-conformance.d.ts +286 -0
- package/dist/eg1-conformance.d.ts.map +1 -0
- package/dist/eg1-conformance.js +379 -0
- package/dist/eg1-conformance.js.map +1 -0
- package/dist/enterprise.d.ts +88 -0
- package/dist/enterprise.d.ts.map +1 -0
- package/dist/enterprise.js +194 -0
- package/dist/enterprise.js.map +1 -0
- package/dist/evidence-postgres.d.ts +123 -0
- package/dist/evidence-postgres.d.ts.map +1 -0
- package/dist/evidence-postgres.js +343 -0
- package/dist/evidence-postgres.js.map +1 -0
- package/dist/evidence.d.ts +113 -0
- package/dist/evidence.d.ts.map +1 -0
- package/dist/evidence.js +369 -0
- package/dist/evidence.js.map +1 -0
- package/dist/execution-binding.d.ts +49 -0
- package/dist/execution-binding.d.ts.map +1 -0
- package/dist/execution-binding.js +243 -0
- package/dist/execution-binding.js.map +1 -0
- package/dist/formal-runtime-map.d.ts +42 -0
- package/dist/formal-runtime-map.d.ts.map +1 -0
- package/dist/formal-runtime-map.js +23 -0
- package/dist/formal-runtime-map.js.map +1 -0
- package/dist/index.d.ts +1002 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1736 -0
- package/dist/index.js.map +1 -0
- package/dist/key-registry.d.ts +60 -0
- package/dist/key-registry.d.ts.map +1 -0
- package/dist/key-registry.js +144 -0
- package/dist/key-registry.js.map +1 -0
- package/dist/mcp.d.ts +53 -0
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +112 -0
- package/dist/mcp.js.map +1 -0
- package/dist/metering.d.ts +80 -0
- package/dist/metering.d.ts.map +1 -0
- package/dist/metering.js +227 -0
- package/dist/metering.js.map +1 -0
- package/dist/metrics.d.ts +68 -0
- package/dist/metrics.d.ts.map +1 -0
- package/dist/metrics.js +242 -0
- package/dist/metrics.js.map +1 -0
- package/dist/network-witness.d.ts +167 -0
- package/dist/network-witness.d.ts.map +1 -0
- package/dist/network-witness.js +520 -0
- package/dist/network-witness.js.map +1 -0
- package/dist/protocol-state.d.ts +141 -0
- package/dist/protocol-state.d.ts.map +1 -0
- package/dist/protocol-state.js +106 -0
- package/dist/protocol-state.js.map +1 -0
- package/dist/receipt-program.d.ts +59 -0
- package/dist/receipt-program.d.ts.map +1 -0
- package/dist/receipt-program.js +1053 -0
- package/dist/receipt-program.js.map +1 -0
- package/dist/reliance-kernel.d.ts +66 -0
- package/dist/reliance-kernel.d.ts.map +1 -0
- package/dist/reliance-kernel.js +103 -0
- package/dist/reliance-kernel.js.map +1 -0
- package/dist/reliance-packet.d.ts +67 -0
- package/dist/reliance-packet.d.ts.map +1 -0
- package/dist/reliance-packet.js +176 -0
- package/dist/reliance-packet.js.map +1 -0
- package/dist/remedy-program-postgres.d.ts +37 -0
- package/dist/remedy-program-postgres.d.ts.map +1 -0
- package/dist/remedy-program-postgres.js +291 -0
- package/dist/remedy-program-postgres.js.map +1 -0
- package/dist/remedy-program-receipt.d.ts +97 -0
- package/dist/remedy-program-receipt.d.ts.map +1 -0
- package/dist/remedy-program-receipt.js +817 -0
- package/dist/remedy-program-receipt.js.map +1 -0
- package/dist/remedy-program.d.ts +76 -0
- package/dist/remedy-program.d.ts.map +1 -0
- package/dist/remedy-program.js +1346 -0
- package/dist/remedy-program.js.map +1 -0
- package/dist/reports/art14.d.ts +101 -0
- package/dist/reports/art14.d.ts.map +1 -0
- package/dist/reports/art14.js +340 -0
- package/dist/reports/art14.js.map +1 -0
- package/dist/reports/assurance-package.d.ts +197 -0
- package/dist/reports/assurance-package.d.ts.map +1 -0
- package/dist/reports/assurance-package.js +313 -0
- package/dist/reports/assurance-package.js.map +1 -0
- package/dist/reports/auditor-workpaper.d.ts +194 -0
- package/dist/reports/auditor-workpaper.d.ts.map +1 -0
- package/dist/reports/auditor-workpaper.js +545 -0
- package/dist/reports/auditor-workpaper.js.map +1 -0
- package/dist/reports/external-verification.d.ts +76 -0
- package/dist/reports/external-verification.d.ts.map +1 -0
- package/dist/reports/external-verification.js +209 -0
- package/dist/reports/external-verification.js.map +1 -0
- package/dist/reports/reperform.d.ts +122 -0
- package/dist/reports/reperform.d.ts.map +1 -0
- package/dist/reports/reperform.js +432 -0
- package/dist/reports/reperform.js.map +1 -0
- package/dist/reports/underwriter.d.ts +127 -0
- package/dist/reports/underwriter.d.ts.map +1 -0
- package/dist/reports/underwriter.js +348 -0
- package/dist/reports/underwriter.js.map +1 -0
- package/dist/retention.d.ts +88 -0
- package/dist/retention.d.ts.map +1 -0
- package/dist/retention.js +90 -0
- package/dist/retention.js.map +1 -0
- package/dist/roster.d.ts +113 -0
- package/dist/roster.d.ts.map +1 -0
- package/dist/roster.js +261 -0
- package/dist/roster.js.map +1 -0
- package/dist/runtime-monitor.d.ts +132 -0
- package/dist/runtime-monitor.d.ts.map +1 -0
- package/dist/runtime-monitor.js +197 -0
- package/dist/runtime-monitor.js.map +1 -0
- package/dist/settlement.d.ts +68 -0
- package/dist/settlement.d.ts.map +1 -0
- package/dist/settlement.js +306 -0
- package/dist/settlement.js.map +1 -0
- package/dist/siem.d.ts +261 -0
- package/dist/siem.d.ts.map +1 -0
- package/dist/siem.js +247 -0
- package/dist/siem.js.map +1 -0
- package/dist/store-postgres.d.ts +107 -0
- package/dist/store-postgres.d.ts.map +1 -0
- package/dist/store-postgres.js +152 -0
- package/dist/store-postgres.js.map +1 -0
- package/dist/store.d.ts +95 -0
- package/dist/store.d.ts.map +1 -0
- package/dist/store.js +202 -0
- package/dist/store.js.map +1 -0
- package/dist/strict-json.d.ts +14 -0
- package/dist/strict-json.d.ts.map +1 -0
- package/dist/strict-json.js +132 -0
- package/dist/strict-json.js.map +1 -0
- package/dist/trust-program-adapters.d.ts +122 -0
- package/dist/trust-program-adapters.d.ts.map +1 -0
- package/dist/trust-program-adapters.js +802 -0
- package/dist/trust-program-adapters.js.map +1 -0
- package/dist/trust-program-postgres.d.ts +41 -0
- package/dist/trust-program-postgres.d.ts.map +1 -0
- package/dist/trust-program-postgres.js +346 -0
- package/dist/trust-program-postgres.js.map +1 -0
- package/dist/trust-program-revocation.d.ts +206 -0
- package/dist/trust-program-revocation.d.ts.map +1 -0
- package/dist/trust-program-revocation.js +600 -0
- package/dist/trust-program-revocation.js.map +1 -0
- package/dist/trust-program.d.ts +197 -0
- package/dist/trust-program.d.ts.map +1 -0
- package/dist/trust-program.js +1351 -0
- package/dist/trust-program.js.map +1 -0
- package/dist/witness-postgres.d.ts +43 -0
- package/dist/witness-postgres.d.ts.map +1 -0
- package/dist/witness-postgres.js +92 -0
- package/dist/witness-postgres.js.map +1 -0
- package/dist/zk-range-proof.d.ts +78 -0
- package/dist/zk-range-proof.d.ts.map +1 -0
- package/dist/zk-range-proof.js +228 -0
- package/dist/zk-range-proof.js.map +1 -0
- package/eg1-conformance.js +3 -404
- package/enterprise.js +3 -180
- package/ep-assure.mjs +1 -0
- package/evidence-postgres.js +3 -356
- package/evidence.js +4 -360
- package/execution-binding.js +3 -212
- package/formal-runtime-map.js +4 -0
- package/index.js +4 -1249
- package/key-registry.js +3 -134
- package/mcp.js +3 -109
- package/metering.js +3 -226
- package/metrics.js +3 -231
- package/network-witness.js +3 -499
- package/package.json +31 -2
- package/receipt-program.js +4 -0
- package/reliance-kernel.js +3 -112
- package/reliance-packet.js +3 -175
- package/remedy-program-postgres.js +4 -0
- package/remedy-program-receipt.js +4 -0
- package/remedy-program.js +4 -0
- package/reports/art14.js +0 -0
- package/reports/assurance-package.js +2 -312
- package/reports/auditor-workpaper.js +3 -537
- package/reports/external-verification.js +3 -222
- package/reports/reperform.js +3 -424
- package/reports/underwriter.js +3 -339
- package/retention.js +3 -84
- package/roster.js +3 -264
- package/runtime-monitor.js +4 -0
- package/settlement.js +3 -299
- package/siem.js +3 -235
- package/src/action-control-manifest.ts +424 -0
- package/src/action-escrow-custodian.ts +427 -0
- package/src/action-escrow-evidence.ts +1178 -0
- package/src/action-escrow-package.ts +1821 -0
- package/src/action-escrow-postgres.ts +366 -0
- package/src/action-escrow-state.ts +498 -0
- package/src/action-escrow-verifiers.ts +484 -0
- package/src/action-escrow.ts +3039 -0
- package/src/action-packs.ts +170 -0
- package/src/adapters/_kit.ts +117 -0
- package/src/adapters/aws.ts +142 -0
- package/src/adapters/cloudflare.ts +78 -0
- package/src/adapters/gcp.ts +71 -0
- package/src/adapters/github.ts +110 -0
- package/src/adapters/jira.ts +56 -0
- package/src/adapters/k8s.ts +71 -0
- package/src/adapters/linear.ts +56 -0
- package/src/adapters/salesforce.ts +56 -0
- package/src/adapters/stripe.ts +82 -0
- package/src/adapters/supabase.ts +122 -0
- package/src/adapters/terraform.ts +60 -0
- package/src/adapters/vercel.ts +85 -0
- package/src/aec-execution.ts +354 -0
- package/src/breakglass.ts +647 -0
- package/src/capability-receipt.ts +1258 -0
- package/src/cf1-conformance.ts +120 -0
- package/src/challenge-store.ts +70 -0
- package/src/control-plane.ts +374 -0
- package/src/coverage.ts +832 -0
- package/src/deployment-attestation.ts +259 -0
- package/src/eg1-conformance.ts +471 -0
- package/src/enterprise.ts +195 -0
- package/src/evidence-postgres.ts +374 -0
- package/src/evidence.ts +367 -0
- package/src/execution-binding.ts +236 -0
- package/src/formal-runtime-map.ts +24 -0
- package/src/index.ts +2122 -0
- package/src/key-registry.ts +150 -0
- package/src/mcp.ts +120 -0
- package/src/metering.ts +237 -0
- package/src/metrics.ts +232 -0
- package/src/network-witness.ts +585 -0
- package/src/protocol-state.ts +143 -0
- package/src/protocol-state.typecheck.ts +94 -0
- package/src/receipt-program.ts +1105 -0
- package/src/reliance-kernel.ts +119 -0
- package/src/reliance-packet.ts +206 -0
- package/src/remedy-program-postgres.ts +367 -0
- package/src/remedy-program-receipt.ts +891 -0
- package/src/remedy-program.ts +1388 -0
- package/src/reports/art14.ts +361 -0
- package/src/reports/assurance-package.ts +330 -0
- package/src/reports/auditor-workpaper.ts +558 -0
- package/src/reports/external-verification.ts +232 -0
- package/src/reports/reperform.ts +441 -0
- package/src/reports/underwriter.ts +356 -0
- package/src/retention.ts +100 -0
- package/src/roster.ts +273 -0
- package/src/runtime-monitor.ts +217 -0
- package/src/settlement.ts +313 -0
- package/src/siem.ts +247 -0
- package/src/store-postgres.ts +167 -0
- package/src/store.ts +214 -0
- package/src/strict-json.ts +115 -0
- package/src/trust-program-adapters.ts +847 -0
- package/src/trust-program-postgres.ts +429 -0
- package/src/trust-program-revocation.ts +751 -0
- package/src/trust-program.ts +1460 -0
- package/src/witness-postgres.ts +106 -0
- package/src/zk-range-proof.ts +250 -0
- package/store-postgres.js +3 -161
- package/store.js +4 -198
- package/strict-json.js +3 -102
- package/trust-program-adapters.js +4 -0
- package/trust-program-postgres.js +4 -0
- package/trust-program-revocation.js +4 -0
- package/trust-program.js +4 -0
- package/witness-postgres.js +3 -96
- package/zk-range-proof.js +4 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-program-adapters.js","sourceRoot":"","sources":["../src/trust-program-adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import type { TrustProgramStore } from './trust-program.js';
|
|
2
|
+
export declare const TRUST_PROGRAM_PG_STORE_VERSION = "EP-GATE-TRUST-PROGRAM-PG-STORE-v1";
|
|
3
|
+
export declare const TRUST_PROGRAM_MAX_STATE_BYTES: number;
|
|
4
|
+
type QueryResult = {
|
|
5
|
+
rowCount: number | null;
|
|
6
|
+
rows?: any[];
|
|
7
|
+
};
|
|
8
|
+
type PgClient = {
|
|
9
|
+
query: (text: string, params?: any[]) => Promise<QueryResult>;
|
|
10
|
+
release: () => void;
|
|
11
|
+
};
|
|
12
|
+
type PgPool = {
|
|
13
|
+
connect: () => Promise<PgClient>;
|
|
14
|
+
};
|
|
15
|
+
export declare const TRUST_PROGRAM_POSTGRES_SQL: Readonly<{
|
|
16
|
+
create: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_create(\n $1::text, $2::text, $3::text, $4::text, $5::text\n)";
|
|
17
|
+
get: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_get($1::text, $2::text)";
|
|
18
|
+
compareAndSwap: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_compare_and_swap(\n $1::text, $2::text, $3::bigint, $4::bigint, $5::text, $6::text, $7::text\n)";
|
|
19
|
+
invalidate: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_invalidate(\n $1::text, $2::text, $3::bigint, $4::text, $5::text, $6::text, $7::text\n)";
|
|
20
|
+
}>;
|
|
21
|
+
/**
|
|
22
|
+
* Create the exact durable store consumed by createTrustProgramKernel().
|
|
23
|
+
* `pool` must provide node-postgres-style connect(), returning a pinned client
|
|
24
|
+
* with query() and release().
|
|
25
|
+
*/
|
|
26
|
+
export declare function createTrustProgramPostgresStore({ pool }?: {
|
|
27
|
+
pool?: PgPool;
|
|
28
|
+
}): TrustProgramStore;
|
|
29
|
+
declare const _default: {
|
|
30
|
+
TRUST_PROGRAM_PG_STORE_VERSION: string;
|
|
31
|
+
TRUST_PROGRAM_MAX_STATE_BYTES: number;
|
|
32
|
+
TRUST_PROGRAM_POSTGRES_SQL: Readonly<{
|
|
33
|
+
create: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_create(\n $1::text, $2::text, $3::text, $4::text, $5::text\n)";
|
|
34
|
+
get: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_get($1::text, $2::text)";
|
|
35
|
+
compareAndSwap: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_compare_and_swap(\n $1::text, $2::text, $3::bigint, $4::bigint, $5::text, $6::text, $7::text\n)";
|
|
36
|
+
invalidate: "SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest\nFROM trust_program_private.trust_program_invalidate(\n $1::text, $2::text, $3::bigint, $4::text, $5::text, $6::text, $7::text\n)";
|
|
37
|
+
}>;
|
|
38
|
+
createTrustProgramPostgresStore: typeof createTrustProgramPostgresStore;
|
|
39
|
+
};
|
|
40
|
+
export default _default;
|
|
41
|
+
//# sourceMappingURL=trust-program-postgres.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-program-postgres.d.ts","sourceRoot":"","sources":["../src/trust-program-postgres.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAGV,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,8BAA8B,sCAAsC,CAAC;AAClF,eAAO,MAAM,6BAA6B,QAAkB,CAAC;AAU7D,KAAK,WAAW,GAAG;IAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,IAAI,CAAC,EAAE,GAAG,EAAE,CAAA;CAAE,CAAC;AAC7D,KAAK,QAAQ,GAAG;IACd,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC;IAC9D,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB,CAAC;AACF,KAAK,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,OAAO,CAAC,QAAQ,CAAC,CAAA;CAAE,CAAC;AAEnD,eAAO,MAAM,0BAA0B;;;;;EAerC,CAAC;AA6LH;;;;GAIG;AACH,wBAAgB,+BAA+B,CAC7C,EAAE,IAAI,EAAE,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAC/B,iBAAiB,CAgLnB;;;;;;;;;;;;AAED,wBAKE"}
|
|
@@ -0,0 +1,346 @@
|
|
|
1
|
+
// @ts-nocheck
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
/**
|
|
4
|
+
* Durable PostgreSQL store for the Gate Trust Program kernel.
|
|
5
|
+
*
|
|
6
|
+
* The database is RPC-only. Every operation runs on one pinned pg client so a
|
|
7
|
+
* transaction can never be split across pooled connections. Logical conflicts
|
|
8
|
+
* are returned as stable store reasons; database ambiguity and outages throw.
|
|
9
|
+
*/
|
|
10
|
+
import crypto from 'node:crypto';
|
|
11
|
+
import { canonicalize } from './execution-binding.js';
|
|
12
|
+
export const TRUST_PROGRAM_PG_STORE_VERSION = 'EP-GATE-TRUST-PROGRAM-PG-STORE-v1';
|
|
13
|
+
export const TRUST_PROGRAM_MAX_STATE_BYTES = 4 * 1024 * 1024;
|
|
14
|
+
const INSTANCE_ID = /^[A-Za-z0-9][A-Za-z0-9._:-]{0,127}$/;
|
|
15
|
+
const DIGEST = /^sha256:[0-9a-f]{64}$/;
|
|
16
|
+
const STRICT_INSTANT = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d{1,9})?Z$/;
|
|
17
|
+
const ENVELOPE_KEYS = new Set([
|
|
18
|
+
'ok', 'reason', 'tenant_id', 'instance_id', 'revision', 'state_json', 'state_digest',
|
|
19
|
+
]);
|
|
20
|
+
export const TRUST_PROGRAM_POSTGRES_SQL = Object.freeze({
|
|
21
|
+
create: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
|
|
22
|
+
FROM trust_program_private.trust_program_create(
|
|
23
|
+
$1::text, $2::text, $3::text, $4::text, $5::text
|
|
24
|
+
)`,
|
|
25
|
+
get: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
|
|
26
|
+
FROM trust_program_private.trust_program_get($1::text, $2::text)`,
|
|
27
|
+
compareAndSwap: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
|
|
28
|
+
FROM trust_program_private.trust_program_compare_and_swap(
|
|
29
|
+
$1::text, $2::text, $3::bigint, $4::bigint, $5::text, $6::text, $7::text
|
|
30
|
+
)`,
|
|
31
|
+
invalidate: `SELECT ok, reason, tenant_id, instance_id, revision, state_json, state_digest
|
|
32
|
+
FROM trust_program_private.trust_program_invalidate(
|
|
33
|
+
$1::text, $2::text, $3::bigint, $4::text, $5::text, $6::text, $7::text
|
|
34
|
+
)`,
|
|
35
|
+
});
|
|
36
|
+
function isRecord(value) {
|
|
37
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
38
|
+
return false;
|
|
39
|
+
const prototype = Object.getPrototypeOf(value);
|
|
40
|
+
return prototype === Object.prototype || prototype === null;
|
|
41
|
+
}
|
|
42
|
+
function exactKeys(value, expected) {
|
|
43
|
+
const keys = Reflect.ownKeys(value);
|
|
44
|
+
return keys.length === expected.size
|
|
45
|
+
&& keys.every((key) => typeof key === 'string' && expected.has(key));
|
|
46
|
+
}
|
|
47
|
+
function fail(reason) {
|
|
48
|
+
return { ok: false, reason };
|
|
49
|
+
}
|
|
50
|
+
function assertTenantId(value) {
|
|
51
|
+
if (typeof value !== 'string'
|
|
52
|
+
|| Buffer.byteLength(value, 'utf8') < 1
|
|
53
|
+
|| Buffer.byteLength(value, 'utf8') > 512
|
|
54
|
+
|| /[\u0000-\u001f\u007f]/.test(value)) {
|
|
55
|
+
throw new TypeError('trust-program tenantId is invalid');
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
function assertInstanceId(value) {
|
|
59
|
+
if (typeof value !== 'string' || !INSTANCE_ID.test(value)) {
|
|
60
|
+
throw new TypeError('trust-program instanceId is invalid');
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function assertRevision(value, label) {
|
|
64
|
+
if (!Number.isSafeInteger(value) || value < 0) {
|
|
65
|
+
throw new TypeError(`trust-program ${label} revision is invalid`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function stateDigest(stateJson) {
|
|
69
|
+
return `sha256:${crypto.createHash('sha256').update(stateJson, 'utf8').digest('hex')}`;
|
|
70
|
+
}
|
|
71
|
+
function stateEventAt(state) {
|
|
72
|
+
const value = state.updated_at;
|
|
73
|
+
if (typeof value !== 'string' || !STRICT_INSTANT.test(value) || !Number.isFinite(Date.parse(value))) {
|
|
74
|
+
throw new TypeError('trust-program state updated_at is invalid');
|
|
75
|
+
}
|
|
76
|
+
return value;
|
|
77
|
+
}
|
|
78
|
+
function encodeState(state, tenantId, instanceId, revision) {
|
|
79
|
+
if (!isRecord(state)
|
|
80
|
+
|| state.tenant_id !== tenantId
|
|
81
|
+
|| state.instance_id !== instanceId
|
|
82
|
+
|| state.revision !== revision) {
|
|
83
|
+
throw new TypeError('trust-program state binding does not match the store operation');
|
|
84
|
+
}
|
|
85
|
+
let stateJson;
|
|
86
|
+
try {
|
|
87
|
+
stateJson = canonicalize(state);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
throw new TypeError('trust-program state must be canonical JSON');
|
|
91
|
+
}
|
|
92
|
+
if (Buffer.byteLength(stateJson, 'utf8') > TRUST_PROGRAM_MAX_STATE_BYTES) {
|
|
93
|
+
throw new TypeError('trust-program state exceeds the durable store limit');
|
|
94
|
+
}
|
|
95
|
+
return {
|
|
96
|
+
stateJson,
|
|
97
|
+
stateDigest: stateDigest(stateJson),
|
|
98
|
+
eventAt: stateEventAt(state),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
function safeRevision(value) {
|
|
102
|
+
const revision = typeof value === 'string' && /^\d+$/.test(value) ? Number(value) : value;
|
|
103
|
+
if (!Number.isSafeInteger(revision) || revision < 0) {
|
|
104
|
+
throw new Error('trust-program Postgres returned an invalid revision');
|
|
105
|
+
}
|
|
106
|
+
return revision;
|
|
107
|
+
}
|
|
108
|
+
function decodeState(row, expectedTenantId, expectedInstanceId, expectedRevision) {
|
|
109
|
+
if (row.tenant_id !== expectedTenantId
|
|
110
|
+
|| row.instance_id !== expectedInstanceId
|
|
111
|
+
|| typeof row.state_json !== 'string'
|
|
112
|
+
|| typeof row.state_digest !== 'string'
|
|
113
|
+
|| !DIGEST.test(row.state_digest)
|
|
114
|
+
|| Buffer.byteLength(row.state_json, 'utf8') > TRUST_PROGRAM_MAX_STATE_BYTES
|
|
115
|
+
|| row.state_digest !== stateDigest(row.state_json)) {
|
|
116
|
+
throw new Error('trust-program Postgres returned an invalid state envelope');
|
|
117
|
+
}
|
|
118
|
+
const revision = safeRevision(row.revision);
|
|
119
|
+
if (expectedRevision !== undefined && revision !== expectedRevision) {
|
|
120
|
+
throw new Error('trust-program Postgres returned an unexpected revision');
|
|
121
|
+
}
|
|
122
|
+
let state;
|
|
123
|
+
try {
|
|
124
|
+
state = JSON.parse(row.state_json);
|
|
125
|
+
if (!isRecord(state)
|
|
126
|
+
|| canonicalize(state) !== row.state_json
|
|
127
|
+
|| state.tenant_id !== expectedTenantId
|
|
128
|
+
|| state.instance_id !== expectedInstanceId
|
|
129
|
+
|| state.revision !== revision) {
|
|
130
|
+
throw new Error('state mismatch');
|
|
131
|
+
}
|
|
132
|
+
stateEventAt(state);
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
throw new Error('trust-program Postgres returned non-canonical state');
|
|
136
|
+
}
|
|
137
|
+
return state;
|
|
138
|
+
}
|
|
139
|
+
function definitiveRow(result, operation, tenantId, instanceId, allowedReasons, expectedRevision) {
|
|
140
|
+
if (!result || result.rowCount !== 1 || !Array.isArray(result.rows) || result.rows.length !== 1) {
|
|
141
|
+
throw new Error(`trust-program ${operation} outcome is ambiguous`);
|
|
142
|
+
}
|
|
143
|
+
const row = result.rows[0];
|
|
144
|
+
if (!isRecord(row) || !exactKeys(row, ENVELOPE_KEYS) || typeof row.ok !== 'boolean') {
|
|
145
|
+
throw new Error(`trust-program ${operation} outcome is malformed`);
|
|
146
|
+
}
|
|
147
|
+
if (row.tenant_id !== tenantId || row.instance_id !== instanceId) {
|
|
148
|
+
throw new Error(`trust-program ${operation} Postgres returned a mismatched identity`);
|
|
149
|
+
}
|
|
150
|
+
if (!row.ok) {
|
|
151
|
+
if (typeof row.reason !== 'string' || !allowedReasons.has(row.reason)
|
|
152
|
+
|| (row.revision !== null && row.revision !== undefined)
|
|
153
|
+
|| (row.state_json !== null && row.state_json !== undefined)
|
|
154
|
+
|| (row.state_digest !== null && row.state_digest !== undefined)) {
|
|
155
|
+
throw new Error(`trust-program ${operation} refusal is unrecognized`);
|
|
156
|
+
}
|
|
157
|
+
return fail(row.reason);
|
|
158
|
+
}
|
|
159
|
+
if (row.reason !== null && row.reason !== undefined && row.reason !== '') {
|
|
160
|
+
throw new Error(`trust-program ${operation} success carried a refusal reason`);
|
|
161
|
+
}
|
|
162
|
+
return {
|
|
163
|
+
ok: true,
|
|
164
|
+
state: decodeState(row, tenantId, instanceId, expectedRevision),
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function lookupInput(value) {
|
|
168
|
+
if (!isRecord(value)
|
|
169
|
+
|| Reflect.ownKeys(value).length !== 2
|
|
170
|
+
|| !Object.hasOwn(value, 'tenantId')
|
|
171
|
+
|| !Object.hasOwn(value, 'instanceId')) {
|
|
172
|
+
throw new TypeError('trust-program lookup input is invalid');
|
|
173
|
+
}
|
|
174
|
+
assertTenantId(value.tenantId);
|
|
175
|
+
assertInstanceId(value.instanceId);
|
|
176
|
+
return { tenantId: value.tenantId, instanceId: value.instanceId };
|
|
177
|
+
}
|
|
178
|
+
function invalidatedState(current, reason, at) {
|
|
179
|
+
if (!isRecord(current.stages)
|
|
180
|
+
|| Object.values(current.stages).some((stage) => !isRecord(stage))
|
|
181
|
+
|| !isRecord(current.execution)) {
|
|
182
|
+
throw new Error('trust-program stored state cannot be invalidated safely');
|
|
183
|
+
}
|
|
184
|
+
const next = structuredClone(current);
|
|
185
|
+
next.status = 'invalidated';
|
|
186
|
+
next.invalidation_reason = reason;
|
|
187
|
+
next.revision += 1;
|
|
188
|
+
next.updated_at = new Date(at).toISOString();
|
|
189
|
+
for (const stage of Object.values(next.stages))
|
|
190
|
+
stage.status = 'invalidated';
|
|
191
|
+
if (['locked', 'ready'].includes(next.execution.status)) {
|
|
192
|
+
next.execution.status = 'invalidated';
|
|
193
|
+
}
|
|
194
|
+
return next;
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Create the exact durable store consumed by createTrustProgramKernel().
|
|
198
|
+
* `pool` must provide node-postgres-style connect(), returning a pinned client
|
|
199
|
+
* with query() and release().
|
|
200
|
+
*/
|
|
201
|
+
export function createTrustProgramPostgresStore({ pool } = {}) {
|
|
202
|
+
if (!pool || typeof pool.connect !== 'function') {
|
|
203
|
+
throw new TypeError('createTrustProgramPostgresStore requires a transaction-capable pg pool');
|
|
204
|
+
}
|
|
205
|
+
async function transaction(readOnly, work) {
|
|
206
|
+
const client = await pool.connect();
|
|
207
|
+
if (!client || typeof client.query !== 'function' || typeof client.release !== 'function') {
|
|
208
|
+
throw new TypeError('trust-program pg pool returned an invalid client');
|
|
209
|
+
}
|
|
210
|
+
let began = false;
|
|
211
|
+
try {
|
|
212
|
+
await client.query(readOnly
|
|
213
|
+
? 'BEGIN ISOLATION LEVEL REPEATABLE READ READ ONLY'
|
|
214
|
+
: 'BEGIN ISOLATION LEVEL READ COMMITTED READ WRITE');
|
|
215
|
+
began = true;
|
|
216
|
+
const value = await work(client);
|
|
217
|
+
await client.query('COMMIT');
|
|
218
|
+
began = false;
|
|
219
|
+
return value;
|
|
220
|
+
}
|
|
221
|
+
catch (error) {
|
|
222
|
+
if (began) {
|
|
223
|
+
try {
|
|
224
|
+
await client.query('ROLLBACK');
|
|
225
|
+
}
|
|
226
|
+
catch (rollbackError) {
|
|
227
|
+
throw new AggregateError([error, rollbackError], 'trust-program transaction and rollback both failed');
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
throw error;
|
|
231
|
+
}
|
|
232
|
+
finally {
|
|
233
|
+
client.release();
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async function getWithClient(client, tenantId, instanceId) {
|
|
237
|
+
return definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.get, [tenantId, instanceId]), 'get', tenantId, instanceId, new Set(['instance_not_found']));
|
|
238
|
+
}
|
|
239
|
+
return Object.freeze({
|
|
240
|
+
version: TRUST_PROGRAM_PG_STORE_VERSION,
|
|
241
|
+
durable: true,
|
|
242
|
+
async create(input) {
|
|
243
|
+
if (!isRecord(input)
|
|
244
|
+
|| Reflect.ownKeys(input).length !== 2
|
|
245
|
+
|| !Object.hasOwn(input, 'tenantId')
|
|
246
|
+
|| !Object.hasOwn(input, 'state')) {
|
|
247
|
+
throw new TypeError('trust-program create input is invalid');
|
|
248
|
+
}
|
|
249
|
+
const { tenantId, state } = input;
|
|
250
|
+
const instanceId = state?.instance_id;
|
|
251
|
+
assertTenantId(tenantId);
|
|
252
|
+
assertInstanceId(instanceId);
|
|
253
|
+
const encoded = encodeState(state, tenantId, instanceId, 0);
|
|
254
|
+
return transaction(false, async (client) => definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.create, [
|
|
255
|
+
tenantId, instanceId, encoded.stateJson, encoded.stateDigest, encoded.eventAt,
|
|
256
|
+
]), 'create', tenantId, instanceId, new Set(['instance_exists', 'evidence_replayed', 'trust_operation_replayed']), 0));
|
|
257
|
+
},
|
|
258
|
+
async get(input) {
|
|
259
|
+
const { tenantId, instanceId } = lookupInput(input);
|
|
260
|
+
return transaction(true, (client) => getWithClient(client, tenantId, instanceId));
|
|
261
|
+
},
|
|
262
|
+
async compareAndSwap(input) {
|
|
263
|
+
if (!isRecord(input)
|
|
264
|
+
|| Reflect.ownKeys(input).length !== 4
|
|
265
|
+
|| !Object.hasOwn(input, 'tenantId')
|
|
266
|
+
|| !Object.hasOwn(input, 'instanceId')
|
|
267
|
+
|| !Object.hasOwn(input, 'expectedRevision')
|
|
268
|
+
|| !Object.hasOwn(input, 'state')) {
|
|
269
|
+
throw new TypeError('trust-program compareAndSwap input is invalid');
|
|
270
|
+
}
|
|
271
|
+
const { tenantId, instanceId, expectedRevision, state } = input;
|
|
272
|
+
assertTenantId(tenantId);
|
|
273
|
+
assertInstanceId(instanceId);
|
|
274
|
+
assertRevision(expectedRevision, 'expected');
|
|
275
|
+
const nextRevision = expectedRevision + 1;
|
|
276
|
+
if (!Number.isSafeInteger(nextRevision)) {
|
|
277
|
+
throw new TypeError('trust-program next revision is invalid');
|
|
278
|
+
}
|
|
279
|
+
const encoded = encodeState(state, tenantId, instanceId, nextRevision);
|
|
280
|
+
return transaction(false, async (client) => definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.compareAndSwap, [
|
|
281
|
+
tenantId,
|
|
282
|
+
instanceId,
|
|
283
|
+
expectedRevision,
|
|
284
|
+
nextRevision,
|
|
285
|
+
encoded.stateJson,
|
|
286
|
+
encoded.stateDigest,
|
|
287
|
+
encoded.eventAt,
|
|
288
|
+
]), 'compareAndSwap', tenantId, instanceId, new Set([
|
|
289
|
+
'instance_not_found', 'revision_conflict', 'clock_regression',
|
|
290
|
+
'evidence_replayed', 'trust_operation_replayed',
|
|
291
|
+
]), nextRevision));
|
|
292
|
+
},
|
|
293
|
+
async invalidate(input) {
|
|
294
|
+
if (!isRecord(input)
|
|
295
|
+
|| Reflect.ownKeys(input).length !== 5
|
|
296
|
+
|| !Object.hasOwn(input, 'tenantId')
|
|
297
|
+
|| !Object.hasOwn(input, 'instanceId')
|
|
298
|
+
|| !Object.hasOwn(input, 'expectedRevision')
|
|
299
|
+
|| !Object.hasOwn(input, 'reason')
|
|
300
|
+
|| !Object.hasOwn(input, 'at')) {
|
|
301
|
+
throw new TypeError('trust-program invalidate input is invalid');
|
|
302
|
+
}
|
|
303
|
+
const { tenantId, instanceId, expectedRevision, reason, at } = input;
|
|
304
|
+
assertTenantId(tenantId);
|
|
305
|
+
assertInstanceId(instanceId);
|
|
306
|
+
assertRevision(expectedRevision, 'expected');
|
|
307
|
+
if (typeof reason !== 'string' || reason.length < 1 || reason.length > 256) {
|
|
308
|
+
throw new TypeError('trust-program invalidation reason is invalid');
|
|
309
|
+
}
|
|
310
|
+
if (!Number.isSafeInteger(at) || at < 0 || at > 8_640_000_000_000_000) {
|
|
311
|
+
throw new TypeError('trust-program invalidation time is invalid');
|
|
312
|
+
}
|
|
313
|
+
return transaction(false, async (client) => {
|
|
314
|
+
const loaded = await getWithClient(client, tenantId, instanceId);
|
|
315
|
+
if (!loaded.ok)
|
|
316
|
+
return loaded;
|
|
317
|
+
const current = loaded.state;
|
|
318
|
+
if (current.revision !== expectedRevision)
|
|
319
|
+
return fail('revision_conflict');
|
|
320
|
+
if (current.status === 'invalidated')
|
|
321
|
+
return fail('program_instance_invalidated');
|
|
322
|
+
const next = invalidatedState(current, reason, at);
|
|
323
|
+
const encoded = encodeState(next, tenantId, instanceId, expectedRevision + 1);
|
|
324
|
+
return definitiveRow(await client.query(TRUST_PROGRAM_POSTGRES_SQL.invalidate, [
|
|
325
|
+
tenantId,
|
|
326
|
+
instanceId,
|
|
327
|
+
expectedRevision,
|
|
328
|
+
reason,
|
|
329
|
+
encoded.eventAt,
|
|
330
|
+
encoded.stateJson,
|
|
331
|
+
encoded.stateDigest,
|
|
332
|
+
]), 'invalidate', tenantId, instanceId, new Set([
|
|
333
|
+
'instance_not_found', 'revision_conflict', 'program_instance_invalidated',
|
|
334
|
+
'clock_regression',
|
|
335
|
+
]), expectedRevision + 1);
|
|
336
|
+
});
|
|
337
|
+
},
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
export default {
|
|
341
|
+
TRUST_PROGRAM_PG_STORE_VERSION,
|
|
342
|
+
TRUST_PROGRAM_MAX_STATE_BYTES,
|
|
343
|
+
TRUST_PROGRAM_POSTGRES_SQL,
|
|
344
|
+
createTrustProgramPostgresStore,
|
|
345
|
+
};
|
|
346
|
+
//# sourceMappingURL=trust-program-postgres.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"trust-program-postgres.js","sourceRoot":"","sources":["../src/trust-program-postgres.ts"],"names":[],"mappings":"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"}
|