@oobe-protocol-labs/synapse-sap-sdk 0.1.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 +882 -0
- package/dist/cjs/constants/index.js +43 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/constants/limits.js +161 -0
- package/dist/cjs/constants/limits.js.map +1 -0
- package/dist/cjs/constants/programs.js +78 -0
- package/dist/cjs/constants/programs.js.map +1 -0
- package/dist/cjs/constants/seeds.js +57 -0
- package/dist/cjs/constants/seeds.js.map +1 -0
- package/dist/cjs/core/client.js +391 -0
- package/dist/cjs/core/client.js.map +1 -0
- package/dist/cjs/core/connection.js +319 -0
- package/dist/cjs/core/connection.js.map +1 -0
- package/dist/cjs/core/index.js +24 -0
- package/dist/cjs/core/index.js.map +1 -0
- package/dist/cjs/errors/index.js +334 -0
- package/dist/cjs/errors/index.js.map +1 -0
- package/dist/cjs/events/index.js +136 -0
- package/dist/cjs/events/index.js.map +1 -0
- package/dist/cjs/idl/index.js +63 -0
- package/dist/cjs/idl/index.js.map +1 -0
- package/dist/cjs/idl/synapse_agent_sap.json +9710 -0
- package/dist/cjs/index.js +147 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/modules/agent.js +272 -0
- package/dist/cjs/modules/agent.js.map +1 -0
- package/dist/cjs/modules/attestation.js +147 -0
- package/dist/cjs/modules/attestation.js.map +1 -0
- package/dist/cjs/modules/base.js +128 -0
- package/dist/cjs/modules/base.js.map +1 -0
- package/dist/cjs/modules/escrow.js +246 -0
- package/dist/cjs/modules/escrow.js.map +1 -0
- package/dist/cjs/modules/feedback.js +166 -0
- package/dist/cjs/modules/feedback.js.map +1 -0
- package/dist/cjs/modules/index.js +35 -0
- package/dist/cjs/modules/index.js.map +1 -0
- package/dist/cjs/modules/indexing.js +375 -0
- package/dist/cjs/modules/indexing.js.map +1 -0
- package/dist/cjs/modules/ledger.js +234 -0
- package/dist/cjs/modules/ledger.js.map +1 -0
- package/dist/cjs/modules/tools.js +319 -0
- package/dist/cjs/modules/tools.js.map +1 -0
- package/dist/cjs/modules/vault.js +410 -0
- package/dist/cjs/modules/vault.js.map +1 -0
- package/dist/cjs/pda/index.js +377 -0
- package/dist/cjs/pda/index.js.map +1 -0
- package/dist/cjs/plugin/index.js +934 -0
- package/dist/cjs/plugin/index.js.map +1 -0
- package/dist/cjs/plugin/protocols.js +282 -0
- package/dist/cjs/plugin/protocols.js.map +1 -0
- package/dist/cjs/plugin/schemas.js +831 -0
- package/dist/cjs/plugin/schemas.js.map +1 -0
- package/dist/cjs/postgres/adapter.js +715 -0
- package/dist/cjs/postgres/adapter.js.map +1 -0
- package/dist/cjs/postgres/index.js +50 -0
- package/dist/cjs/postgres/index.js.map +1 -0
- package/dist/cjs/postgres/serializers.js +381 -0
- package/dist/cjs/postgres/serializers.js.map +1 -0
- package/dist/cjs/postgres/sync.js +221 -0
- package/dist/cjs/postgres/sync.js.map +1 -0
- package/dist/cjs/postgres/types.js +44 -0
- package/dist/cjs/postgres/types.js.map +1 -0
- package/dist/cjs/registries/builder.js +414 -0
- package/dist/cjs/registries/builder.js.map +1 -0
- package/dist/cjs/registries/discovery.js +362 -0
- package/dist/cjs/registries/discovery.js.map +1 -0
- package/dist/cjs/registries/index.js +51 -0
- package/dist/cjs/registries/index.js.map +1 -0
- package/dist/cjs/registries/session.js +433 -0
- package/dist/cjs/registries/session.js.map +1 -0
- package/dist/cjs/registries/x402.js +577 -0
- package/dist/cjs/registries/x402.js.map +1 -0
- package/dist/cjs/types/accounts.js +13 -0
- package/dist/cjs/types/accounts.js.map +1 -0
- package/dist/cjs/types/common.js +13 -0
- package/dist/cjs/types/common.js.map +1 -0
- package/dist/cjs/types/enums.js +174 -0
- package/dist/cjs/types/enums.js.map +1 -0
- package/dist/cjs/types/index.js +36 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/instructions.js +92 -0
- package/dist/cjs/types/instructions.js.map +1 -0
- package/dist/cjs/utils/hash.js +58 -0
- package/dist/cjs/utils/hash.js.map +1 -0
- package/dist/cjs/utils/index.js +27 -0
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/serialization.js +105 -0
- package/dist/cjs/utils/serialization.js.map +1 -0
- package/dist/cjs/utils/validation.js +36 -0
- package/dist/cjs/utils/validation.js.map +1 -0
- package/dist/esm/constants/index.js +29 -0
- package/dist/esm/constants/index.js.map +1 -0
- package/dist/esm/constants/limits.js +158 -0
- package/dist/esm/constants/limits.js.map +1 -0
- package/dist/esm/constants/programs.js +75 -0
- package/dist/esm/constants/programs.js.map +1 -0
- package/dist/esm/constants/seeds.js +54 -0
- package/dist/esm/constants/seeds.js.map +1 -0
- package/dist/esm/core/client.js +384 -0
- package/dist/esm/core/client.js.map +1 -0
- package/dist/esm/core/connection.js +315 -0
- package/dist/esm/core/connection.js.map +1 -0
- package/dist/esm/core/index.js +19 -0
- package/dist/esm/core/index.js.map +1 -0
- package/dist/esm/errors/index.js +325 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/events/index.js +132 -0
- package/dist/esm/events/index.js.map +1 -0
- package/dist/esm/idl/index.js +57 -0
- package/dist/esm/idl/index.js.map +1 -0
- package/dist/esm/idl/synapse_agent_sap.json +9710 -0
- package/dist/esm/index.js +70 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/modules/agent.js +268 -0
- package/dist/esm/modules/agent.js.map +1 -0
- package/dist/esm/modules/attestation.js +143 -0
- package/dist/esm/modules/attestation.js.map +1 -0
- package/dist/esm/modules/base.js +124 -0
- package/dist/esm/modules/base.js.map +1 -0
- package/dist/esm/modules/escrow.js +242 -0
- package/dist/esm/modules/escrow.js.map +1 -0
- package/dist/esm/modules/feedback.js +162 -0
- package/dist/esm/modules/feedback.js.map +1 -0
- package/dist/esm/modules/index.js +23 -0
- package/dist/esm/modules/index.js.map +1 -0
- package/dist/esm/modules/indexing.js +371 -0
- package/dist/esm/modules/indexing.js.map +1 -0
- package/dist/esm/modules/ledger.js +230 -0
- package/dist/esm/modules/ledger.js.map +1 -0
- package/dist/esm/modules/tools.js +315 -0
- package/dist/esm/modules/tools.js.map +1 -0
- package/dist/esm/modules/vault.js +406 -0
- package/dist/esm/modules/vault.js.map +1 -0
- package/dist/esm/pda/index.js +357 -0
- package/dist/esm/pda/index.js.map +1 -0
- package/dist/esm/plugin/index.js +927 -0
- package/dist/esm/plugin/index.js.map +1 -0
- package/dist/esm/plugin/protocols.js +279 -0
- package/dist/esm/plugin/protocols.js.map +1 -0
- package/dist/esm/plugin/schemas.js +828 -0
- package/dist/esm/plugin/schemas.js.map +1 -0
- package/dist/esm/postgres/adapter.js +678 -0
- package/dist/esm/postgres/adapter.js.map +1 -0
- package/dist/esm/postgres/index.js +27 -0
- package/dist/esm/postgres/index.js.map +1 -0
- package/dist/esm/postgres/serializers.js +362 -0
- package/dist/esm/postgres/serializers.js.map +1 -0
- package/dist/esm/postgres/sync.js +217 -0
- package/dist/esm/postgres/sync.js.map +1 -0
- package/dist/esm/postgres/types.js +41 -0
- package/dist/esm/postgres/types.js.map +1 -0
- package/dist/esm/registries/builder.js +410 -0
- package/dist/esm/registries/builder.js.map +1 -0
- package/dist/esm/registries/discovery.js +358 -0
- package/dist/esm/registries/discovery.js.map +1 -0
- package/dist/esm/registries/index.js +44 -0
- package/dist/esm/registries/index.js.map +1 -0
- package/dist/esm/registries/session.js +429 -0
- package/dist/esm/registries/session.js.map +1 -0
- package/dist/esm/registries/x402.js +573 -0
- package/dist/esm/registries/x402.js.map +1 -0
- package/dist/esm/types/accounts.js +12 -0
- package/dist/esm/types/accounts.js.map +1 -0
- package/dist/esm/types/common.js +12 -0
- package/dist/esm/types/common.js.map +1 -0
- package/dist/esm/types/enums.js +171 -0
- package/dist/esm/types/enums.js.map +1 -0
- package/dist/esm/types/index.js +25 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/instructions.js +89 -0
- package/dist/esm/types/instructions.js.map +1 -0
- package/dist/esm/utils/hash.js +53 -0
- package/dist/esm/utils/hash.js.map +1 -0
- package/dist/esm/utils/index.js +19 -0
- package/dist/esm/utils/index.js.map +1 -0
- package/dist/esm/utils/serialization.js +98 -0
- package/dist/esm/utils/serialization.js.map +1 -0
- package/dist/esm/utils/validation.js +33 -0
- package/dist/esm/utils/validation.js.map +1 -0
- package/dist/types/constants/index.d.ts +27 -0
- package/dist/types/constants/index.d.ts.map +1 -0
- package/dist/types/constants/limits.d.ts +149 -0
- package/dist/types/constants/limits.d.ts.map +1 -0
- package/dist/types/constants/programs.d.ts +69 -0
- package/dist/types/constants/programs.d.ts.map +1 -0
- package/dist/types/constants/seeds.d.ts +61 -0
- package/dist/types/constants/seeds.d.ts.map +1 -0
- package/dist/types/core/client.d.ts +323 -0
- package/dist/types/core/client.d.ts.map +1 -0
- package/dist/types/core/connection.d.ts +279 -0
- package/dist/types/core/connection.d.ts.map +1 -0
- package/dist/types/core/index.d.ts +20 -0
- package/dist/types/core/index.d.ts.map +1 -0
- package/dist/types/errors/index.d.ts +276 -0
- package/dist/types/errors/index.d.ts.map +1 -0
- package/dist/types/events/index.d.ts +248 -0
- package/dist/types/events/index.d.ts.map +1 -0
- package/dist/types/idl/index.d.ts +70 -0
- package/dist/types/idl/index.d.ts.map +1 -0
- package/dist/types/index.d.ts +68 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/modules/agent.d.ts +166 -0
- package/dist/types/modules/agent.d.ts.map +1 -0
- package/dist/types/modules/attestation.d.ts +96 -0
- package/dist/types/modules/attestation.d.ts.map +1 -0
- package/dist/types/modules/base.d.ts +126 -0
- package/dist/types/modules/base.d.ts.map +1 -0
- package/dist/types/modules/escrow.d.ts +151 -0
- package/dist/types/modules/escrow.d.ts.map +1 -0
- package/dist/types/modules/feedback.d.ts +105 -0
- package/dist/types/modules/feedback.d.ts.map +1 -0
- package/dist/types/modules/index.d.ts +24 -0
- package/dist/types/modules/index.d.ts.map +1 -0
- package/dist/types/modules/indexing.d.ts +200 -0
- package/dist/types/modules/indexing.d.ts.map +1 -0
- package/dist/types/modules/ledger.d.ts +150 -0
- package/dist/types/modules/ledger.d.ts.map +1 -0
- package/dist/types/modules/tools.d.ts +182 -0
- package/dist/types/modules/tools.d.ts.map +1 -0
- package/dist/types/modules/vault.d.ts +240 -0
- package/dist/types/modules/vault.d.ts.map +1 -0
- package/dist/types/pda/index.d.ts +296 -0
- package/dist/types/pda/index.d.ts.map +1 -0
- package/dist/types/plugin/index.d.ts +171 -0
- package/dist/types/plugin/index.d.ts.map +1 -0
- package/dist/types/plugin/protocols.d.ts +152 -0
- package/dist/types/plugin/protocols.d.ts.map +1 -0
- package/dist/types/plugin/schemas.d.ts +823 -0
- package/dist/types/plugin/schemas.d.ts.map +1 -0
- package/dist/types/postgres/adapter.d.ts +355 -0
- package/dist/types/postgres/adapter.d.ts.map +1 -0
- package/dist/types/postgres/index.d.ts +24 -0
- package/dist/types/postgres/index.d.ts.map +1 -0
- package/dist/types/postgres/serializers.d.ts +30 -0
- package/dist/types/postgres/serializers.d.ts.map +1 -0
- package/dist/types/postgres/sync.d.ts +132 -0
- package/dist/types/postgres/sync.d.ts.map +1 -0
- package/dist/types/postgres/types.d.ts +167 -0
- package/dist/types/postgres/types.d.ts.map +1 -0
- package/dist/types/registries/builder.d.ts +340 -0
- package/dist/types/registries/builder.d.ts.map +1 -0
- package/dist/types/registries/discovery.d.ts +333 -0
- package/dist/types/registries/discovery.d.ts.map +1 -0
- package/dist/types/registries/index.d.ts +48 -0
- package/dist/types/registries/index.d.ts.map +1 -0
- package/dist/types/registries/session.d.ts +323 -0
- package/dist/types/registries/session.d.ts.map +1 -0
- package/dist/types/registries/x402.d.ts +463 -0
- package/dist/types/registries/x402.d.ts.map +1 -0
- package/dist/types/types/accounts.d.ts +565 -0
- package/dist/types/types/accounts.d.ts.map +1 -0
- package/dist/types/types/common.d.ts +166 -0
- package/dist/types/types/common.d.ts.map +1 -0
- package/dist/types/types/enums.d.ts +238 -0
- package/dist/types/types/enums.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +28 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/instructions.d.ts +366 -0
- package/dist/types/types/instructions.d.ts.map +1 -0
- package/dist/types/utils/hash.d.ts +48 -0
- package/dist/types/utils/hash.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +19 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/serialization.d.ts +69 -0
- package/dist/types/utils/serialization.d.ts.map +1 -0
- package/dist/types/utils/validation.d.ts +29 -0
- package/dist/types/utils/validation.d.ts.map +1 -0
- package/package.json +178 -0
- package/src/constants/index.ts +44 -0
- package/src/constants/limits.ts +165 -0
- package/src/constants/programs.ts +83 -0
- package/src/constants/seeds.ts +66 -0
- package/src/core/client.ts +416 -0
- package/src/core/connection.ts +409 -0
- package/src/core/index.ts +20 -0
- package/src/errors/index.ts +346 -0
- package/src/events/index.ts +335 -0
- package/src/idl/index.ts +76 -0
- package/src/idl/synapse_agent_sap.json +9710 -0
- package/src/index.ts +253 -0
- package/src/modules/agent.ts +319 -0
- package/src/modules/attestation.ts +168 -0
- package/src/modules/base.ts +158 -0
- package/src/modules/escrow.ts +308 -0
- package/src/modules/feedback.ts +186 -0
- package/src/modules/index.ts +24 -0
- package/src/modules/indexing.ts +444 -0
- package/src/modules/ledger.ts +262 -0
- package/src/modules/tools.ts +411 -0
- package/src/modules/vault.ts +533 -0
- package/src/pda/index.ts +512 -0
- package/src/plugin/index.ts +1202 -0
- package/src/plugin/protocols.ts +404 -0
- package/src/plugin/schemas.ts +909 -0
- package/src/postgres/adapter.ts +904 -0
- package/src/postgres/index.ts +59 -0
- package/src/postgres/schema.sql +683 -0
- package/src/postgres/serializers.ts +485 -0
- package/src/postgres/sync.ts +254 -0
- package/src/postgres/types.ts +245 -0
- package/src/registries/builder.ts +607 -0
- package/src/registries/discovery.ts +572 -0
- package/src/registries/index.ts +77 -0
- package/src/registries/session.ts +613 -0
- package/src/registries/x402.ts +906 -0
- package/src/types/accounts.ts +618 -0
- package/src/types/common.ts +187 -0
- package/src/types/enums.ts +214 -0
- package/src/types/index.ts +92 -0
- package/src/types/instructions.ts +413 -0
- package/src/utils/hash.ts +57 -0
- package/src/utils/index.ts +19 -0
- package/src/utils/serialization.ts +98 -0
- package/src/utils/validation.ts +36 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/plugin/schemas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4ExB;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiHf,CAAC;AAMX;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqDlB,CAAC;AAMX;;;;;;;;GAQG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2CrB,CAAC;AAMX;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EhB,CAAC;AAMX;;;;;;;;GAQG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Hf,CAAC;AAMX;;;;;;;;;GASG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoIf,CAAC;AAMX;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsElB,CAAC;AAMX;;;;;;;;GAQG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkFhB,CAAC"}
|
|
@@ -0,0 +1,355 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module postgres/adapter
|
|
3
|
+
* @description PostgreSQL adapter for SAP v2 — syncs on-chain accounts
|
|
4
|
+
* to a relational database for off-chain querying and analytics.
|
|
5
|
+
*
|
|
6
|
+
* The adapter uses `pg` (node-postgres) as the database driver.
|
|
7
|
+
* It is database-driver agnostic at the interface level — you can
|
|
8
|
+
* substitute any client that implements the `PgClient` interface.
|
|
9
|
+
*
|
|
10
|
+
* @category Postgres
|
|
11
|
+
* @since v0.1.0
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* ```ts
|
|
15
|
+
* import { SapPostgres } from "@synapse-sap/sdk/postgres";
|
|
16
|
+
* import { Pool } from "pg";
|
|
17
|
+
*
|
|
18
|
+
* const pool = new Pool({ connectionString: "postgresql://..." });
|
|
19
|
+
* const pg = new SapPostgres(pool, sapClient);
|
|
20
|
+
*
|
|
21
|
+
* // Run schema migration
|
|
22
|
+
* await pg.migrate();
|
|
23
|
+
*
|
|
24
|
+
* // Sync all agents to PostgreSQL
|
|
25
|
+
* await pg.syncAgents();
|
|
26
|
+
*
|
|
27
|
+
* // Full sync (all account types)
|
|
28
|
+
* await pg.syncAll();
|
|
29
|
+
*
|
|
30
|
+
* // Query off-chain
|
|
31
|
+
* const agents = await pg.query("SELECT * FROM sap_agents WHERE is_active = true");
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
import type { SapClient } from "../core/client";
|
|
35
|
+
import type { SyncOptions, SyncCursorRow, SapAccountType } from "./types";
|
|
36
|
+
/**
|
|
37
|
+
* @interface PgClient
|
|
38
|
+
* @description Minimal PostgreSQL client interface.
|
|
39
|
+
* Compatible with `pg.Pool`, `pg.Client`, or any wrapper
|
|
40
|
+
* that provides `query()`.
|
|
41
|
+
* @category Postgres
|
|
42
|
+
* @since v0.1.0
|
|
43
|
+
*/
|
|
44
|
+
export interface PgClient {
|
|
45
|
+
query(text: string, values?: unknown[]): Promise<{
|
|
46
|
+
rows: unknown[];
|
|
47
|
+
rowCount: number;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* @name SapPostgres
|
|
52
|
+
* @description PostgreSQL off-chain mirror for SAP v2 on-chain data.
|
|
53
|
+
*
|
|
54
|
+
* Connects to a PostgreSQL database and synchronizes all 22 on-chain
|
|
55
|
+
* account types into relational tables. Supports incremental sync,
|
|
56
|
+
* event logging, and cursor-based pagination.
|
|
57
|
+
*
|
|
58
|
+
* @category Postgres
|
|
59
|
+
* @since v0.1.0
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* ```ts
|
|
63
|
+
* import { SapPostgres } from "@synapse-sap/sdk/postgres";
|
|
64
|
+
* import { Pool } from "pg";
|
|
65
|
+
* import { SapClient } from "@synapse-sap/sdk";
|
|
66
|
+
*
|
|
67
|
+
* const pool = new Pool({ connectionString: process.env.DATABASE_URL });
|
|
68
|
+
* const sap = SapClient.from(provider);
|
|
69
|
+
* const pg = new SapPostgres(pool, sap);
|
|
70
|
+
*
|
|
71
|
+
* await pg.migrate(); // Create tables
|
|
72
|
+
* await pg.syncAll(); // Mirror on-chain state
|
|
73
|
+
*
|
|
74
|
+
* // Read from PostgreSQL
|
|
75
|
+
* const { rows } = await pg.query(
|
|
76
|
+
* "SELECT * FROM sap_agents WHERE is_active = true ORDER BY reputation_score DESC"
|
|
77
|
+
* );
|
|
78
|
+
* ```
|
|
79
|
+
*/
|
|
80
|
+
export declare class SapPostgres {
|
|
81
|
+
private readonly db;
|
|
82
|
+
private readonly client;
|
|
83
|
+
private readonly debug;
|
|
84
|
+
constructor(db: PgClient, client: SapClient, debug?: boolean);
|
|
85
|
+
/**
|
|
86
|
+
* @name migrate
|
|
87
|
+
* @description Run the SQL schema migration to create all SAP tables,
|
|
88
|
+
* indexes, views, and enum types. Safe to call multiple times
|
|
89
|
+
* (uses `CREATE IF NOT EXISTS`).
|
|
90
|
+
* @returns {Promise<void>}
|
|
91
|
+
* @since v0.1.0
|
|
92
|
+
*/
|
|
93
|
+
migrate(): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* @name migrateWithSQL
|
|
96
|
+
* @description Run migration with a custom SQL string.
|
|
97
|
+
* Useful when the schema.sql file is bundled differently.
|
|
98
|
+
* @param sql - The full SQL schema to execute.
|
|
99
|
+
* @since v0.1.0
|
|
100
|
+
*/
|
|
101
|
+
migrateWithSQL(sql: string): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* @name query
|
|
104
|
+
* @description Execute a raw SQL query against the database.
|
|
105
|
+
* @param text - SQL query string.
|
|
106
|
+
* @param values - Parameterized values.
|
|
107
|
+
* @returns Query result with rows and rowCount.
|
|
108
|
+
* @since v0.1.0
|
|
109
|
+
*/
|
|
110
|
+
query<T = unknown>(text: string, values?: unknown[]): Promise<{
|
|
111
|
+
rows: T[];
|
|
112
|
+
rowCount: number;
|
|
113
|
+
}>;
|
|
114
|
+
/**
|
|
115
|
+
* @name upsert
|
|
116
|
+
* @description Insert or update a row in the specified table.
|
|
117
|
+
* Uses `ON CONFLICT (pda) DO UPDATE` for idempotent writes.
|
|
118
|
+
* @param table - Target table name.
|
|
119
|
+
* @param row - Key-value record to insert.
|
|
120
|
+
* @since v0.1.0
|
|
121
|
+
*/
|
|
122
|
+
upsert(table: string, row: Record<string, unknown>): Promise<void>;
|
|
123
|
+
/**
|
|
124
|
+
* @name upsertBatch
|
|
125
|
+
* @description Upsert multiple rows in a single transaction.
|
|
126
|
+
* @param table - Target table name.
|
|
127
|
+
* @param rows - Array of key-value records.
|
|
128
|
+
* @since v0.1.0
|
|
129
|
+
*/
|
|
130
|
+
upsertBatch(table: string, rows: Record<string, unknown>[]): Promise<void>;
|
|
131
|
+
/**
|
|
132
|
+
* @name getCursor
|
|
133
|
+
* @description Get the sync cursor for a given account type.
|
|
134
|
+
* @param accountType - The account type to check.
|
|
135
|
+
* @since v0.1.0
|
|
136
|
+
*/
|
|
137
|
+
getCursor(accountType: SapAccountType): Promise<SyncCursorRow | null>;
|
|
138
|
+
/**
|
|
139
|
+
* @name updateCursor
|
|
140
|
+
* @description Update the sync cursor after a successful sync.
|
|
141
|
+
* @param accountType - The account type synced.
|
|
142
|
+
* @param slot - The last synced slot.
|
|
143
|
+
* @param signature - Optional last TX signature.
|
|
144
|
+
* @since v0.1.0
|
|
145
|
+
*/
|
|
146
|
+
updateCursor(accountType: SapAccountType | string, slot: number, signature?: string): Promise<void>;
|
|
147
|
+
/**
|
|
148
|
+
* @name syncGlobal
|
|
149
|
+
* @description Sync the GlobalRegistry singleton to PostgreSQL.
|
|
150
|
+
* @since v0.1.0
|
|
151
|
+
*/
|
|
152
|
+
syncGlobal(): Promise<void>;
|
|
153
|
+
/**
|
|
154
|
+
* @name syncAgents
|
|
155
|
+
* @description Sync all AgentAccount PDAs to PostgreSQL.
|
|
156
|
+
* @since v0.1.0
|
|
157
|
+
*/
|
|
158
|
+
syncAgents(): Promise<number>;
|
|
159
|
+
/**
|
|
160
|
+
* @name syncAgentStats
|
|
161
|
+
* @description Sync all AgentStats PDAs to PostgreSQL.
|
|
162
|
+
* @since v0.1.0
|
|
163
|
+
*/
|
|
164
|
+
syncAgentStats(): Promise<number>;
|
|
165
|
+
/**
|
|
166
|
+
* @name syncFeedbacks
|
|
167
|
+
* @description Sync all FeedbackAccount PDAs to PostgreSQL.
|
|
168
|
+
* @since v0.1.0
|
|
169
|
+
*/
|
|
170
|
+
syncFeedbacks(): Promise<number>;
|
|
171
|
+
/**
|
|
172
|
+
* @name syncTools
|
|
173
|
+
* @description Sync all ToolDescriptor PDAs to PostgreSQL.
|
|
174
|
+
* @since v0.1.0
|
|
175
|
+
*/
|
|
176
|
+
syncTools(): Promise<number>;
|
|
177
|
+
/**
|
|
178
|
+
* @name syncEscrows
|
|
179
|
+
* @description Sync all EscrowAccount PDAs to PostgreSQL.
|
|
180
|
+
* @since v0.1.0
|
|
181
|
+
*/
|
|
182
|
+
syncEscrows(): Promise<number>;
|
|
183
|
+
/**
|
|
184
|
+
* @name syncAttestations
|
|
185
|
+
* @description Sync all AgentAttestation PDAs to PostgreSQL.
|
|
186
|
+
* @since v0.1.0
|
|
187
|
+
*/
|
|
188
|
+
syncAttestations(): Promise<number>;
|
|
189
|
+
/**
|
|
190
|
+
* @name syncVaults
|
|
191
|
+
* @description Sync all MemoryVault PDAs to PostgreSQL.
|
|
192
|
+
* @since v0.1.0
|
|
193
|
+
*/
|
|
194
|
+
syncVaults(): Promise<number>;
|
|
195
|
+
/**
|
|
196
|
+
* @name syncSessions
|
|
197
|
+
* @description Sync all SessionLedger PDAs to PostgreSQL.
|
|
198
|
+
* @since v0.1.0
|
|
199
|
+
*/
|
|
200
|
+
syncSessions(): Promise<number>;
|
|
201
|
+
/**
|
|
202
|
+
* @name syncLedgers
|
|
203
|
+
* @description Sync all MemoryLedger PDAs to PostgreSQL.
|
|
204
|
+
* @since v0.1.0
|
|
205
|
+
*/
|
|
206
|
+
syncLedgers(): Promise<number>;
|
|
207
|
+
/**
|
|
208
|
+
* @name syncLedgerPages
|
|
209
|
+
* @description Sync all LedgerPage PDAs to PostgreSQL.
|
|
210
|
+
* @since v0.1.0
|
|
211
|
+
*/
|
|
212
|
+
syncLedgerPages(): Promise<number>;
|
|
213
|
+
/**
|
|
214
|
+
* @name syncCapabilityIndexes
|
|
215
|
+
* @description Sync all CapabilityIndex PDAs to PostgreSQL.
|
|
216
|
+
* @since v0.1.0
|
|
217
|
+
*/
|
|
218
|
+
syncCapabilityIndexes(): Promise<number>;
|
|
219
|
+
/**
|
|
220
|
+
* @name syncProtocolIndexes
|
|
221
|
+
* @description Sync all ProtocolIndex PDAs to PostgreSQL.
|
|
222
|
+
* @since v0.1.0
|
|
223
|
+
*/
|
|
224
|
+
syncProtocolIndexes(): Promise<number>;
|
|
225
|
+
/**
|
|
226
|
+
* @name syncToolCategoryIndexes
|
|
227
|
+
* @description Sync all ToolCategoryIndex PDAs to PostgreSQL.
|
|
228
|
+
* @since v0.1.0
|
|
229
|
+
*/
|
|
230
|
+
syncToolCategoryIndexes(): Promise<number>;
|
|
231
|
+
/**
|
|
232
|
+
* @name syncEpochPages
|
|
233
|
+
* @description Sync all EpochPage PDAs to PostgreSQL.
|
|
234
|
+
* @since v0.1.0
|
|
235
|
+
*/
|
|
236
|
+
syncEpochPages(): Promise<number>;
|
|
237
|
+
/**
|
|
238
|
+
* @name syncDelegates
|
|
239
|
+
* @description Sync all VaultDelegate PDAs to PostgreSQL.
|
|
240
|
+
* @since v0.1.0
|
|
241
|
+
*/
|
|
242
|
+
syncDelegates(): Promise<number>;
|
|
243
|
+
/**
|
|
244
|
+
* @name syncCheckpoints
|
|
245
|
+
* @description Sync all SessionCheckpoint PDAs to PostgreSQL.
|
|
246
|
+
* @since v0.1.0
|
|
247
|
+
*/
|
|
248
|
+
syncCheckpoints(): Promise<number>;
|
|
249
|
+
/**
|
|
250
|
+
* @name syncAll
|
|
251
|
+
* @description Sync all on-chain account types to PostgreSQL.
|
|
252
|
+
*
|
|
253
|
+
* Fetches every account via `program.account.*.all()` and
|
|
254
|
+
* upserts into the corresponding table. Reports progress
|
|
255
|
+
* via the `onProgress` callback.
|
|
256
|
+
*
|
|
257
|
+
* @param options - Optional sync configuration.
|
|
258
|
+
* @returns Summary of synced account counts.
|
|
259
|
+
* @since v0.1.0
|
|
260
|
+
*
|
|
261
|
+
* @example
|
|
262
|
+
* ```ts
|
|
263
|
+
* const result = await pg.syncAll({
|
|
264
|
+
* onProgress: (synced, total, type) => {
|
|
265
|
+
* console.log(`[${type}] ${synced}/${total}`);
|
|
266
|
+
* },
|
|
267
|
+
* });
|
|
268
|
+
* console.log("Total synced:", result.totalRecords);
|
|
269
|
+
* ```
|
|
270
|
+
*/
|
|
271
|
+
syncAll(options?: SyncOptions): Promise<SyncAllResult>;
|
|
272
|
+
/**
|
|
273
|
+
* @name syncEvent
|
|
274
|
+
* @description Store a parsed SAP event in the events log table.
|
|
275
|
+
* @param eventName - The event name (e.g. "RegisteredEvent").
|
|
276
|
+
* @param txSignature - The transaction signature.
|
|
277
|
+
* @param slot - The Solana slot.
|
|
278
|
+
* @param data - The parsed event data.
|
|
279
|
+
* @param agentPda - Optional agent PDA for indexing.
|
|
280
|
+
* @param wallet - Optional wallet for indexing.
|
|
281
|
+
* @since v0.1.0
|
|
282
|
+
*/
|
|
283
|
+
syncEvent(eventName: string, txSignature: string, slot: number, data: Record<string, unknown>, agentPda?: string, wallet?: string): Promise<void>;
|
|
284
|
+
/**
|
|
285
|
+
* @name getAgent
|
|
286
|
+
* @description Fetch a single agent by PDA or wallet.
|
|
287
|
+
* @param pdaOrWallet - Agent PDA (base58) or owner wallet.
|
|
288
|
+
* @since v0.1.0
|
|
289
|
+
*/
|
|
290
|
+
getAgent(pdaOrWallet: string): Promise<unknown | null>;
|
|
291
|
+
/**
|
|
292
|
+
* @name getActiveAgents
|
|
293
|
+
* @description Fetch all active agents, ordered by reputation.
|
|
294
|
+
* @param limit - Max agents to return (default: 100).
|
|
295
|
+
* @since v0.1.0
|
|
296
|
+
*/
|
|
297
|
+
getActiveAgents(limit?: number): Promise<unknown[]>;
|
|
298
|
+
/**
|
|
299
|
+
* @name getEscrowBalance
|
|
300
|
+
* @description Fetch escrow balance for a specific agent/depositor pair.
|
|
301
|
+
* @param agentPda - Agent PDA (base58).
|
|
302
|
+
* @param depositor - Depositor wallet (base58).
|
|
303
|
+
* @since v0.1.0
|
|
304
|
+
*/
|
|
305
|
+
getEscrowBalance(agentPda: string, depositor: string): Promise<unknown | null>;
|
|
306
|
+
/**
|
|
307
|
+
* @name getAgentTools
|
|
308
|
+
* @description Fetch all active tools for a given agent.
|
|
309
|
+
* @param agentPda - Agent PDA (base58).
|
|
310
|
+
* @since v0.1.0
|
|
311
|
+
*/
|
|
312
|
+
getAgentTools(agentPda: string): Promise<unknown[]>;
|
|
313
|
+
/**
|
|
314
|
+
* @name getRecentEvents
|
|
315
|
+
* @description Fetch the most recent events.
|
|
316
|
+
* @param limit - Max events to return (default: 50).
|
|
317
|
+
* @param eventName - Optional filter by event name.
|
|
318
|
+
* @since v0.1.0
|
|
319
|
+
*/
|
|
320
|
+
getRecentEvents(limit?: number, eventName?: string): Promise<unknown[]>;
|
|
321
|
+
/**
|
|
322
|
+
* @name getSyncStatus
|
|
323
|
+
* @description Get the sync status for all account types.
|
|
324
|
+
* @since v0.1.0
|
|
325
|
+
*/
|
|
326
|
+
getSyncStatus(): Promise<SyncCursorRow[]>;
|
|
327
|
+
private log;
|
|
328
|
+
}
|
|
329
|
+
/**
|
|
330
|
+
* @interface SyncAllResult
|
|
331
|
+
* @description Result of a full sync operation.
|
|
332
|
+
* @category Postgres
|
|
333
|
+
* @since v0.1.0
|
|
334
|
+
*/
|
|
335
|
+
export interface SyncAllResult {
|
|
336
|
+
agents: number;
|
|
337
|
+
agentStats: number;
|
|
338
|
+
feedbacks: number;
|
|
339
|
+
tools: number;
|
|
340
|
+
escrows: number;
|
|
341
|
+
attestations: number;
|
|
342
|
+
vaults: number;
|
|
343
|
+
sessions: number;
|
|
344
|
+
epochPages: number;
|
|
345
|
+
delegates: number;
|
|
346
|
+
checkpoints: number;
|
|
347
|
+
ledgers: number;
|
|
348
|
+
ledgerPages: number;
|
|
349
|
+
capabilityIndexes: number;
|
|
350
|
+
protocolIndexes: number;
|
|
351
|
+
toolCategoryIndexes: number;
|
|
352
|
+
totalRecords: number;
|
|
353
|
+
durationMs: number;
|
|
354
|
+
}
|
|
355
|
+
//# sourceMappingURL=adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/postgres/adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module postgres
|
|
3
|
+
* @description PostgreSQL off-chain mirror for SAP v2.
|
|
4
|
+
*
|
|
5
|
+
* Re-exports all public types, the adapter, sync engine,
|
|
6
|
+
* and serializer functions.
|
|
7
|
+
*
|
|
8
|
+
* @category Postgres
|
|
9
|
+
* @since v0.1.0
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```ts
|
|
13
|
+
* import {
|
|
14
|
+
* SapPostgres,
|
|
15
|
+
* SapSyncEngine,
|
|
16
|
+
* SAP_TABLE_MAP,
|
|
17
|
+
* } from "@synapse-sap/sdk/postgres";
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
export { SapPostgres, type PgClient, type SyncAllResult } from "./adapter";
|
|
21
|
+
export { SapSyncEngine } from "./sync";
|
|
22
|
+
export { SAP_TABLE_MAP, type SapPostgresConfig, type SapAccountType, type SyncMeta, type AgentRow, type EscrowRow, type ToolRow, type LedgerRow, type EventRow, type SyncCursorRow, type SyncOptions, } from "./types";
|
|
23
|
+
export { serializeGlobalRegistry, serializeAgent, serializeAgentStats, serializeFeedback, serializeCapabilityIndex, serializeProtocolIndex, serializeVault, serializeSession, serializeEpochPage, serializeDelegate, serializeTool, serializeCheckpoint, serializeEscrow, serializeToolCategoryIndex, serializeAttestation, serializeLedger, serializeLedgerPage, } from "./serializers";
|
|
24
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/postgres/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAGH,OAAO,EAAE,WAAW,EAAE,KAAK,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,WAAW,CAAC;AAC3E,OAAO,EAAE,aAAa,EAAE,MAAM,QAAQ,CAAC;AAGvC,OAAO,EACL,aAAa,EACb,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACnB,KAAK,QAAQ,EACb,KAAK,QAAQ,EACb,KAAK,SAAS,EACd,KAAK,OAAO,EACZ,KAAK,SAAS,EACd,KAAK,QAAQ,EACb,KAAK,aAAa,EAClB,KAAK,WAAW,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,iBAAiB,EACjB,wBAAwB,EACxB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,eAAe,EACf,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module postgres/serializers
|
|
3
|
+
* @description Transforms on-chain account data into PostgreSQL-ready row objects.
|
|
4
|
+
*
|
|
5
|
+
* Each serializer takes the deserialized Anchor account data and the PDA
|
|
6
|
+
* address, then returns a flat key-value record suitable for SQL INSERT/UPSERT.
|
|
7
|
+
*
|
|
8
|
+
* @category Postgres
|
|
9
|
+
* @since v0.1.0
|
|
10
|
+
* @internal
|
|
11
|
+
*/
|
|
12
|
+
import type { AgentAccountData, AgentStatsData, FeedbackAccountData, CapabilityIndexData, ProtocolIndexData, ToolCategoryIndexData, GlobalRegistryData, MemoryVaultData, SessionLedgerData, EpochPageData, VaultDelegateData, SessionCheckpointData, ToolDescriptorData, EscrowAccountData, AgentAttestationData, MemoryLedgerData, LedgerPageData } from "../types";
|
|
13
|
+
export declare function serializeGlobalRegistry(pda: string, d: GlobalRegistryData, slot: number): Record<string, unknown>;
|
|
14
|
+
export declare function serializeAgent(pda: string, d: AgentAccountData, slot: number): Record<string, unknown>;
|
|
15
|
+
export declare function serializeAgentStats(pda: string, d: AgentStatsData, slot: number): Record<string, unknown>;
|
|
16
|
+
export declare function serializeFeedback(pda: string, d: FeedbackAccountData, slot: number): Record<string, unknown>;
|
|
17
|
+
export declare function serializeCapabilityIndex(pda: string, d: CapabilityIndexData, slot: number): Record<string, unknown>;
|
|
18
|
+
export declare function serializeProtocolIndex(pda: string, d: ProtocolIndexData, slot: number): Record<string, unknown>;
|
|
19
|
+
export declare function serializeVault(pda: string, d: MemoryVaultData, slot: number): Record<string, unknown>;
|
|
20
|
+
export declare function serializeSession(pda: string, d: SessionLedgerData, slot: number): Record<string, unknown>;
|
|
21
|
+
export declare function serializeEpochPage(pda: string, d: EpochPageData, slot: number): Record<string, unknown>;
|
|
22
|
+
export declare function serializeDelegate(pda: string, d: VaultDelegateData, slot: number): Record<string, unknown>;
|
|
23
|
+
export declare function serializeTool(pda: string, d: ToolDescriptorData, slot: number): Record<string, unknown>;
|
|
24
|
+
export declare function serializeCheckpoint(pda: string, d: SessionCheckpointData, slot: number): Record<string, unknown>;
|
|
25
|
+
export declare function serializeEscrow(pda: string, d: EscrowAccountData, slot: number): Record<string, unknown>;
|
|
26
|
+
export declare function serializeToolCategoryIndex(pda: string, d: ToolCategoryIndexData, slot: number): Record<string, unknown>;
|
|
27
|
+
export declare function serializeAttestation(pda: string, d: AgentAttestationData, slot: number): Record<string, unknown>;
|
|
28
|
+
export declare function serializeLedger(pda: string, d: MemoryLedgerData, slot: number): Record<string, unknown>;
|
|
29
|
+
export declare function serializeLedgerPage(pda: string, d: LedgerPageData, slot: number): Record<string, unknown>;
|
|
30
|
+
//# sourceMappingURL=serializers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serializers.d.ts","sourceRoot":"","sources":["../../../src/postgres/serializers.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAIH,OAAO,KAAK,EACV,gBAAgB,EAChB,cAAc,EACd,mBAAmB,EACnB,mBAAmB,EACnB,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,eAAe,EACf,iBAAiB,EACjB,aAAa,EACb,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACf,MAAM,UAAU,CAAC;AA8BlB,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,kBAAkB,EACrB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkDzB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,cAAc,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBzB;AAED,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,mBAAmB,EACtB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,iBAAiB,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,cAAc,CAC5B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,eAAe,EAClB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB;AAED,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,iBAAiB,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB;AAED,wBAAgB,kBAAkB,CAChC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,aAAa,EAChB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB;AAED,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,iBAAiB,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAazB;AAED,wBAAgB,aAAa,CAC3B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,kBAAkB,EACrB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA0BzB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,qBAAqB,EACxB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBzB;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,iBAAiB,EACpB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CA4BzB;AAED,wBAAgB,0BAA0B,CACxC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,qBAAqB,EACxB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,oBAAoB,EACvB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAgBzB;AAED,wBAAgB,eAAe,CAC7B,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,gBAAgB,EACnB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAkBzB;AAED,wBAAgB,mBAAmB,CACjC,GAAG,EAAE,MAAM,EACX,CAAC,EAAE,cAAc,EACjB,IAAI,EAAE,MAAM,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAezB"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @module postgres/sync
|
|
3
|
+
* @description Real-time and scheduled sync engine for the SAP PostgreSQL
|
|
4
|
+
* adapter. Provides cron-like periodic sync and WebSocket-based
|
|
5
|
+
* live event streaming.
|
|
6
|
+
*
|
|
7
|
+
* @category Postgres
|
|
8
|
+
* @since v0.1.0
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* import { SapSyncEngine } from "@synapse-sap/sdk/postgres";
|
|
13
|
+
* import { SapPostgres } from "@synapse-sap/sdk/postgres";
|
|
14
|
+
* import { SapClient } from "@synapse-sap/sdk";
|
|
15
|
+
* import { Pool } from "pg";
|
|
16
|
+
*
|
|
17
|
+
* const pool = new Pool({ connectionString: "postgresql://..." });
|
|
18
|
+
* const sap = SapClient.from(provider);
|
|
19
|
+
* const pg = new SapPostgres(pool, sap);
|
|
20
|
+
* const sync = new SapSyncEngine(pg, sap);
|
|
21
|
+
*
|
|
22
|
+
* // One-shot full sync
|
|
23
|
+
* await sync.run();
|
|
24
|
+
*
|
|
25
|
+
* // Periodic sync (every 60 seconds)
|
|
26
|
+
* sync.start(60_000);
|
|
27
|
+
*
|
|
28
|
+
* // Live event streaming via WebSocket
|
|
29
|
+
* await sync.startEventStream();
|
|
30
|
+
*
|
|
31
|
+
* // Graceful shutdown
|
|
32
|
+
* await sync.stop();
|
|
33
|
+
* ```
|
|
34
|
+
*/
|
|
35
|
+
import type { SapClient } from "../core/client";
|
|
36
|
+
import type { SapPostgres, SyncAllResult } from "./adapter";
|
|
37
|
+
import type { SyncOptions } from "./types";
|
|
38
|
+
/**
|
|
39
|
+
* @name SapSyncEngine
|
|
40
|
+
* @description Orchestrates periodic and real-time sync between
|
|
41
|
+
* Solana on-chain state and the PostgreSQL mirror.
|
|
42
|
+
*
|
|
43
|
+
* Two operational modes:
|
|
44
|
+
*
|
|
45
|
+
* 1. **Periodic sync** — polls all account types at a configurable
|
|
46
|
+
* interval and upserts into PostgreSQL.
|
|
47
|
+
*
|
|
48
|
+
* 2. **Event streaming** — subscribes to SAP program logs via
|
|
49
|
+
* WebSocket and inserts events in real-time.
|
|
50
|
+
*
|
|
51
|
+
* Both modes can run simultaneously.
|
|
52
|
+
*
|
|
53
|
+
* @category Postgres
|
|
54
|
+
* @since v0.1.0
|
|
55
|
+
*/
|
|
56
|
+
export declare class SapSyncEngine {
|
|
57
|
+
private readonly pg;
|
|
58
|
+
private readonly client;
|
|
59
|
+
private readonly debug;
|
|
60
|
+
private intervalId;
|
|
61
|
+
private logSubId;
|
|
62
|
+
private running;
|
|
63
|
+
constructor(pg: SapPostgres, client: SapClient, debug?: boolean);
|
|
64
|
+
/**
|
|
65
|
+
* @name run
|
|
66
|
+
* @description Execute a single full sync cycle.
|
|
67
|
+
* @param options - Optional sync configuration.
|
|
68
|
+
* @returns Sync result summary.
|
|
69
|
+
* @since v0.1.0
|
|
70
|
+
*/
|
|
71
|
+
run(options?: SyncOptions): Promise<SyncAllResult>;
|
|
72
|
+
/**
|
|
73
|
+
* @name start
|
|
74
|
+
* @description Start periodic sync at the given interval.
|
|
75
|
+
* Safe to call when already running — resets the interval.
|
|
76
|
+
*
|
|
77
|
+
* @param intervalMs - Sync interval in milliseconds (default: 60_000).
|
|
78
|
+
* @param options - Optional sync configuration.
|
|
79
|
+
* @since v0.1.0
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* ```ts
|
|
83
|
+
* // Sync every 30 seconds
|
|
84
|
+
* sync.start(30_000);
|
|
85
|
+
* ```
|
|
86
|
+
*/
|
|
87
|
+
start(intervalMs?: number, options?: SyncOptions): void;
|
|
88
|
+
/**
|
|
89
|
+
* @name stop
|
|
90
|
+
* @description Stop all sync activity (periodic + event stream).
|
|
91
|
+
* @since v0.1.0
|
|
92
|
+
*/
|
|
93
|
+
stop(): Promise<void>;
|
|
94
|
+
private stopInterval;
|
|
95
|
+
/**
|
|
96
|
+
* @name startEventStream
|
|
97
|
+
* @description Subscribe to SAP program logs via WebSocket and
|
|
98
|
+
* insert parsed events into the `sap_events` table in real-time.
|
|
99
|
+
*
|
|
100
|
+
* @since v0.1.0
|
|
101
|
+
*
|
|
102
|
+
* @example
|
|
103
|
+
* ```ts
|
|
104
|
+
* // Start streaming events
|
|
105
|
+
* await sync.startEventStream();
|
|
106
|
+
*
|
|
107
|
+
* // Later, stop the stream
|
|
108
|
+
* await sync.stopEventStream();
|
|
109
|
+
* ```
|
|
110
|
+
*/
|
|
111
|
+
startEventStream(): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* @name stopEventStream
|
|
114
|
+
* @description Unsubscribe from the program log stream.
|
|
115
|
+
* @since v0.1.0
|
|
116
|
+
*/
|
|
117
|
+
stopEventStream(): Promise<void>;
|
|
118
|
+
/**
|
|
119
|
+
* @name isRunning
|
|
120
|
+
* @description Check whether the periodic sync is active.
|
|
121
|
+
* @since v0.1.0
|
|
122
|
+
*/
|
|
123
|
+
isRunning(): boolean;
|
|
124
|
+
/**
|
|
125
|
+
* @name isStreaming
|
|
126
|
+
* @description Check whether the event stream is active.
|
|
127
|
+
* @since v0.1.0
|
|
128
|
+
*/
|
|
129
|
+
isStreaming(): boolean;
|
|
130
|
+
private log;
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=sync.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sync.d.ts","sourceRoot":"","sources":["../../../src/postgres/sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC5D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAM3C;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAc;IACjC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAEhC,OAAO,CAAC,UAAU,CAA+C;IACjE,OAAO,CAAC,QAAQ,CAAuB;IACvC,OAAO,CAAC,OAAO,CAAS;gBAEZ,EAAE,EAAE,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,UAAQ;IAU7D;;;;;;OAMG;IACG,GAAG,CAAC,OAAO,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,aAAa,CAAC;IAWxD;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,UAAU,SAAS,EAAE,OAAO,CAAC,EAAE,WAAW,GAAG,IAAI;IAcvD;;;;OAIG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAO3B,OAAO,CAAC,YAAY;IAWpB;;;;;;;;;;;;;;;OAeG;IACG,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAyCvC;;;;OAIG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAatC;;;;OAIG;IACH,SAAS,IAAI,OAAO;IAIpB;;;;OAIG;IACH,WAAW,IAAI,OAAO;IAQtB,OAAO,CAAC,GAAG;CAKZ"}
|