@breeztech/breez-sdk-spark 0.12.2-dev3 → 0.12.2-dev4
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 +4 -4
- package/breez-sdk-spark.tgz +0 -0
- package/bundler/breez_sdk_spark_wasm.d.ts +601 -731
- package/bundler/breez_sdk_spark_wasm_bg.js +54 -151
- package/bundler/breez_sdk_spark_wasm_bg.wasm +0 -0
- package/bundler/breez_sdk_spark_wasm_bg.wasm.d.ts +5 -7
- package/bundler/storage/index.js +43 -65
- package/deno/breez_sdk_spark_wasm.d.ts +601 -731
- package/deno/breez_sdk_spark_wasm.js +54 -141
- package/deno/breez_sdk_spark_wasm_bg.wasm +0 -0
- package/deno/breez_sdk_spark_wasm_bg.wasm.d.ts +5 -7
- package/nodejs/breez_sdk_spark_wasm.d.ts +601 -731
- package/nodejs/breez_sdk_spark_wasm.js +54 -151
- package/nodejs/breez_sdk_spark_wasm_bg.wasm +0 -0
- package/nodejs/breez_sdk_spark_wasm_bg.wasm.d.ts +5 -7
- package/nodejs/index.js +2 -16
- package/nodejs/package.json +0 -1
- package/nodejs/postgres-storage/index.cjs +31 -42
- package/nodejs/postgres-storage/migrations.cjs +0 -24
- package/nodejs/postgres-tree-store/index.cjs +2 -12
- package/nodejs/storage/index.cjs +28 -19
- package/nodejs/storage/migrations.cjs +0 -18
- package/package.json +1 -1
- package/web/breez_sdk_spark_wasm.d.ts +606 -738
- package/web/breez_sdk_spark_wasm.js +54 -141
- package/web/breez_sdk_spark_wasm_bg.wasm +0 -0
- package/web/breez_sdk_spark_wasm_bg.wasm.d.ts +5 -7
- package/web/storage/index.js +43 -65
- package/nodejs/postgres-token-store/errors.cjs +0 -13
- package/nodejs/postgres-token-store/index.cjs +0 -857
- package/nodejs/postgres-token-store/migrations.cjs +0 -163
- package/nodejs/postgres-token-store/package.json +0 -9
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Database Migration Manager for Breez SDK PostgreSQL Token Store
|
|
3
|
-
*
|
|
4
|
-
* Uses a token_schema_migrations table + pg_advisory_xact_lock to safely run
|
|
5
|
-
* migrations from concurrent processes.
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
const { TokenStoreError } = require("./errors.cjs");
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Advisory lock ID for token store migrations.
|
|
12
|
-
* Uses a different lock ID from the storage/tree store migrations to avoid contention.
|
|
13
|
-
* Derived from ASCII bytes of "TOKN" (0x544F4B4E).
|
|
14
|
-
*/
|
|
15
|
-
const MIGRATION_LOCK_ID = "1414022990"; // 0x544F4B4E as decimal string
|
|
16
|
-
|
|
17
|
-
class TokenStoreMigrationManager {
|
|
18
|
-
constructor(logger = null) {
|
|
19
|
-
this.logger = logger;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
/**
|
|
23
|
-
* Run all pending migrations inside a single transaction with an advisory lock.
|
|
24
|
-
* @param {import('pg').Pool} pool
|
|
25
|
-
*/
|
|
26
|
-
async migrate(pool) {
|
|
27
|
-
const client = await pool.connect();
|
|
28
|
-
try {
|
|
29
|
-
await client.query("BEGIN");
|
|
30
|
-
|
|
31
|
-
// Transaction-level advisory lock — automatically released on COMMIT/ROLLBACK
|
|
32
|
-
await client.query(`SELECT pg_advisory_xact_lock(${MIGRATION_LOCK_ID})`);
|
|
33
|
-
|
|
34
|
-
// Create the migrations tracking table if needed
|
|
35
|
-
await client.query(`
|
|
36
|
-
CREATE TABLE IF NOT EXISTS token_schema_migrations (
|
|
37
|
-
version INTEGER PRIMARY KEY,
|
|
38
|
-
applied_at TIMESTAMPTZ DEFAULT NOW()
|
|
39
|
-
)
|
|
40
|
-
`);
|
|
41
|
-
|
|
42
|
-
// Get current version
|
|
43
|
-
const versionResult = await client.query(
|
|
44
|
-
"SELECT COALESCE(MAX(version), 0) AS version FROM token_schema_migrations"
|
|
45
|
-
);
|
|
46
|
-
const currentVersion = versionResult.rows[0].version;
|
|
47
|
-
|
|
48
|
-
const migrations = this._getMigrations();
|
|
49
|
-
|
|
50
|
-
if (currentVersion >= migrations.length) {
|
|
51
|
-
this._log("info", `Token store database is up to date (version ${currentVersion})`);
|
|
52
|
-
await client.query("COMMIT");
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
this._log(
|
|
57
|
-
"info",
|
|
58
|
-
`Migrating token store database from version ${currentVersion} to ${migrations.length}`
|
|
59
|
-
);
|
|
60
|
-
|
|
61
|
-
for (let i = currentVersion; i < migrations.length; i++) {
|
|
62
|
-
const migration = migrations[i];
|
|
63
|
-
const version = i + 1;
|
|
64
|
-
this._log("debug", `Running token store migration ${version}: ${migration.name}`);
|
|
65
|
-
|
|
66
|
-
for (const sql of migration.sql) {
|
|
67
|
-
await client.query(sql);
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
await client.query(
|
|
71
|
-
"INSERT INTO token_schema_migrations (version) VALUES ($1)",
|
|
72
|
-
[version]
|
|
73
|
-
);
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
await client.query("COMMIT");
|
|
77
|
-
this._log("info", "Token store database migration completed successfully");
|
|
78
|
-
} catch (error) {
|
|
79
|
-
await client.query("ROLLBACK").catch(() => {});
|
|
80
|
-
throw new TokenStoreError(
|
|
81
|
-
`Token store migration failed: ${error.message}`,
|
|
82
|
-
error
|
|
83
|
-
);
|
|
84
|
-
} finally {
|
|
85
|
-
client.release();
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
_log(level, message) {
|
|
90
|
-
if (this.logger && typeof this.logger.log === "function") {
|
|
91
|
-
this.logger.log({ line: message, level });
|
|
92
|
-
} else if (level === "error") {
|
|
93
|
-
console.error(`[TokenStoreMigrationManager] ${message}`);
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Migrations matching the Rust PostgresTokenStore schema exactly.
|
|
99
|
-
*/
|
|
100
|
-
_getMigrations() {
|
|
101
|
-
return [
|
|
102
|
-
{
|
|
103
|
-
name: "Create token store tables with race condition protection",
|
|
104
|
-
sql: [
|
|
105
|
-
`CREATE TABLE IF NOT EXISTS token_metadata (
|
|
106
|
-
identifier TEXT PRIMARY KEY,
|
|
107
|
-
issuer_public_key TEXT NOT NULL,
|
|
108
|
-
name TEXT NOT NULL,
|
|
109
|
-
ticker TEXT NOT NULL,
|
|
110
|
-
decimals INTEGER NOT NULL,
|
|
111
|
-
max_supply TEXT NOT NULL,
|
|
112
|
-
is_freezable BOOLEAN NOT NULL,
|
|
113
|
-
creation_entity_public_key TEXT
|
|
114
|
-
)`,
|
|
115
|
-
|
|
116
|
-
`CREATE INDEX IF NOT EXISTS idx_token_metadata_issuer_pk
|
|
117
|
-
ON token_metadata (issuer_public_key)`,
|
|
118
|
-
|
|
119
|
-
`CREATE TABLE IF NOT EXISTS token_reservations (
|
|
120
|
-
id TEXT PRIMARY KEY,
|
|
121
|
-
purpose TEXT NOT NULL,
|
|
122
|
-
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
123
|
-
)`,
|
|
124
|
-
|
|
125
|
-
`CREATE TABLE IF NOT EXISTS token_outputs (
|
|
126
|
-
id TEXT PRIMARY KEY,
|
|
127
|
-
token_identifier TEXT NOT NULL REFERENCES token_metadata(identifier),
|
|
128
|
-
owner_public_key TEXT NOT NULL,
|
|
129
|
-
revocation_commitment TEXT NOT NULL,
|
|
130
|
-
withdraw_bond_sats BIGINT NOT NULL,
|
|
131
|
-
withdraw_relative_block_locktime BIGINT NOT NULL,
|
|
132
|
-
token_public_key TEXT,
|
|
133
|
-
token_amount TEXT NOT NULL,
|
|
134
|
-
prev_tx_hash TEXT NOT NULL,
|
|
135
|
-
prev_tx_vout INTEGER NOT NULL,
|
|
136
|
-
reservation_id TEXT REFERENCES token_reservations(id) ON DELETE SET NULL,
|
|
137
|
-
added_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
138
|
-
)`,
|
|
139
|
-
|
|
140
|
-
`CREATE INDEX IF NOT EXISTS idx_token_outputs_identifier
|
|
141
|
-
ON token_outputs (token_identifier)`,
|
|
142
|
-
|
|
143
|
-
`CREATE INDEX IF NOT EXISTS idx_token_outputs_reservation
|
|
144
|
-
ON token_outputs (reservation_id) WHERE reservation_id IS NOT NULL`,
|
|
145
|
-
|
|
146
|
-
`CREATE TABLE IF NOT EXISTS token_spent_outputs (
|
|
147
|
-
output_id TEXT PRIMARY KEY,
|
|
148
|
-
spent_at TIMESTAMPTZ NOT NULL DEFAULT NOW()
|
|
149
|
-
)`,
|
|
150
|
-
|
|
151
|
-
`CREATE TABLE IF NOT EXISTS token_swap_status (
|
|
152
|
-
id INTEGER PRIMARY KEY DEFAULT 1 CHECK (id = 1),
|
|
153
|
-
last_completed_at TIMESTAMPTZ
|
|
154
|
-
)`,
|
|
155
|
-
|
|
156
|
-
`INSERT INTO token_swap_status (id) VALUES (1) ON CONFLICT DO NOTHING`,
|
|
157
|
-
],
|
|
158
|
-
},
|
|
159
|
-
];
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
module.exports = { TokenStoreMigrationManager };
|