@framers/sql-storage-adapter 0.7.1 → 0.7.3
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 +43 -0
- package/dist/adapters/electron/preload.cjs +289 -0
- package/dist/adapters/electron/renderer.d.ts +9 -0
- package/dist/adapters/electron/renderer.d.ts.map +1 -0
- package/dist/adapters/electron/renderer.js +8 -0
- package/dist/adapters/electron/renderer.js.map +1 -0
- package/dist/cjs/adapters/__tests__/indexedDbAdapter.spec.d.ts +2 -0
- package/dist/cjs/adapters/__tests__/indexedDbAdapter.spec.js +133 -0
- package/dist/cjs/adapters/baseStorageAdapter.d.ts +368 -0
- package/dist/cjs/adapters/baseStorageAdapter.js +744 -0
- package/dist/cjs/adapters/betterSqliteAdapter.d.ts +124 -0
- package/dist/cjs/adapters/betterSqliteAdapter.js +334 -0
- package/dist/cjs/adapters/capacitorSqliteAdapter.d.ts +83 -0
- package/dist/cjs/adapters/capacitorSqliteAdapter.js +250 -0
- package/dist/cjs/adapters/electron/electronMainAdapter.d.ts +251 -0
- package/dist/cjs/adapters/electron/electronMainAdapter.js +392 -0
- package/dist/cjs/adapters/electron/electronRendererAdapter.d.ts +177 -0
- package/dist/cjs/adapters/electron/electronRendererAdapter.js +283 -0
- package/dist/cjs/adapters/electron/index.d.ts +74 -0
- package/dist/cjs/adapters/electron/index.js +86 -0
- package/dist/cjs/adapters/electron/ipc/channels.d.ts +196 -0
- package/dist/cjs/adapters/electron/ipc/channels.js +127 -0
- package/dist/cjs/adapters/electron/ipc/index.d.ts +11 -0
- package/dist/cjs/adapters/electron/ipc/index.js +38 -0
- package/dist/cjs/adapters/electron/ipc/protocol.d.ts +78 -0
- package/dist/cjs/adapters/electron/ipc/protocol.js +341 -0
- package/dist/cjs/adapters/electron/ipc/types.d.ts +248 -0
- package/dist/cjs/adapters/electron/ipc/types.js +15 -0
- package/dist/cjs/adapters/electron/migration/autoMigrator.d.ts +184 -0
- package/dist/cjs/adapters/electron/migration/autoMigrator.js +441 -0
- package/dist/cjs/adapters/electron/migration/index.d.ts +9 -0
- package/dist/cjs/adapters/electron/migration/index.js +29 -0
- package/dist/cjs/adapters/electron/preload.d.ts +126 -0
- package/dist/cjs/adapters/electron/preload.js +233 -0
- package/dist/cjs/adapters/electron/recovery/corruptionDetector.d.ts +214 -0
- package/dist/cjs/adapters/electron/recovery/corruptionDetector.js +359 -0
- package/dist/cjs/adapters/electron/recovery/index.d.ts +11 -0
- package/dist/cjs/adapters/electron/recovery/index.js +34 -0
- package/dist/cjs/adapters/electron/recovery/walCheckpoint.d.ts +186 -0
- package/dist/cjs/adapters/electron/recovery/walCheckpoint.js +263 -0
- package/dist/cjs/adapters/electron/renderer.d.ts +9 -0
- package/dist/cjs/adapters/electron/renderer.js +33 -0
- package/dist/cjs/adapters/electron/window/index.d.ts +9 -0
- package/dist/cjs/adapters/electron/window/index.js +29 -0
- package/dist/cjs/adapters/electron/window/windowManager.d.ts +190 -0
- package/dist/cjs/adapters/electron/window/windowManager.js +321 -0
- package/dist/cjs/adapters/indexedDbAdapter.d.ts +490 -0
- package/dist/cjs/adapters/indexedDbAdapter.js +993 -0
- package/dist/cjs/adapters/postgresAdapter.d.ts +424 -0
- package/dist/cjs/adapters/postgresAdapter.js +889 -0
- package/dist/cjs/adapters/sqlJsAdapter.d.ts +64 -0
- package/dist/cjs/adapters/sqlJsAdapter.js +268 -0
- package/dist/cjs/adapters/supabase.d.ts +58 -0
- package/dist/cjs/adapters/supabase.js +401 -0
- package/dist/cjs/codecs/BrowserBlobCodec.d.ts +14 -0
- package/dist/cjs/codecs/BrowserBlobCodec.js +57 -0
- package/dist/cjs/codecs/NodeBlobCodec.d.ts +14 -0
- package/dist/cjs/codecs/NodeBlobCodec.js +59 -0
- package/dist/cjs/core/contracts/blobCodec.d.ts +15 -0
- package/dist/cjs/core/contracts/blobCodec.js +15 -0
- package/dist/cjs/core/contracts/context.d.ts +221 -0
- package/dist/cjs/core/contracts/context.js +15 -0
- package/dist/cjs/core/contracts/dialect.d.ts +154 -0
- package/dist/cjs/core/contracts/dialect.js +15 -0
- package/dist/cjs/core/contracts/events.d.ts +225 -0
- package/dist/cjs/core/contracts/events.js +15 -0
- package/dist/cjs/core/contracts/exporter.d.ts +13 -0
- package/dist/cjs/core/contracts/exporter.js +15 -0
- package/dist/cjs/core/contracts/extensions.d.ts +73 -0
- package/dist/cjs/core/contracts/extensions.js +15 -0
- package/dist/cjs/core/contracts/features.d.ts +25 -0
- package/dist/cjs/core/contracts/features.js +61 -0
- package/dist/cjs/core/contracts/fts.d.ts +66 -0
- package/dist/cjs/core/contracts/fts.js +15 -0
- package/dist/cjs/core/contracts/hooks.d.ts +481 -0
- package/dist/cjs/core/contracts/hooks.js +140 -0
- package/dist/cjs/core/contracts/index.d.ts +260 -0
- package/dist/cjs/core/contracts/index.js +41 -0
- package/dist/cjs/core/contracts/limitations.d.ts +46 -0
- package/dist/cjs/core/contracts/limitations.js +218 -0
- package/dist/cjs/core/contracts/performance.d.ts +308 -0
- package/dist/cjs/core/contracts/performance.js +144 -0
- package/dist/cjs/core/database.d.ts +220 -0
- package/dist/cjs/core/database.js +136 -0
- package/dist/cjs/core/portable.d.ts +23 -0
- package/dist/cjs/core/portable.js +66 -0
- package/dist/cjs/core/resolver.d.ts +77 -0
- package/dist/cjs/core/resolver.js +235 -0
- package/dist/cjs/dialects/PostgresDialect.d.ts +35 -0
- package/dist/cjs/dialects/PostgresDialect.js +143 -0
- package/dist/cjs/dialects/SqliteDialect.d.ts +35 -0
- package/dist/cjs/dialects/SqliteDialect.js +142 -0
- package/dist/cjs/dialects/shared.d.ts +17 -0
- package/dist/cjs/dialects/shared.js +90 -0
- package/dist/cjs/exporters/PostgresExporter.d.ts +14 -0
- package/dist/cjs/exporters/PostgresExporter.js +61 -0
- package/dist/cjs/exporters/SqliteFileExporter.d.ts +16 -0
- package/dist/cjs/exporters/SqliteFileExporter.js +43 -0
- package/dist/cjs/features/backup/cloudBackup.d.ts +219 -0
- package/dist/cjs/features/backup/cloudBackup.js +209 -0
- package/dist/cjs/features/kv/idb.d.ts +79 -0
- package/dist/cjs/features/kv/idb.js +32 -0
- package/dist/cjs/features/kv/index.d.ts +14 -0
- package/dist/cjs/features/kv/index.js +40 -0
- package/dist/cjs/features/kv/indexedDbKeyValueStore.d.ts +77 -0
- package/dist/cjs/features/kv/indexedDbKeyValueStore.js +116 -0
- package/dist/cjs/features/kv/keyValueStore.d.ts +48 -0
- package/dist/cjs/features/kv/keyValueStore.js +67 -0
- package/dist/cjs/features/kv/sqlKeyValueStore.d.ts +34 -0
- package/dist/cjs/features/kv/sqlKeyValueStore.js +81 -0
- package/dist/cjs/features/kv/valueCodec.d.ts +35 -0
- package/dist/cjs/features/kv/valueCodec.js +426 -0
- package/dist/cjs/features/migrations/dataExport.d.ts +77 -0
- package/dist/cjs/features/migrations/dataExport.js +194 -0
- package/dist/cjs/features/migrations/dataImport.d.ts +54 -0
- package/dist/cjs/features/migrations/dataImport.js +300 -0
- package/dist/cjs/features/migrations/migration.d.ts +89 -0
- package/dist/cjs/features/migrations/migration.js +187 -0
- package/dist/cjs/features/migrations/schemaMigrations.d.ts +93 -0
- package/dist/cjs/features/migrations/schemaMigrations.js +220 -0
- package/dist/cjs/features/sync/conflicts/conflictResolver.d.ts +222 -0
- package/dist/cjs/features/sync/conflicts/conflictResolver.js +366 -0
- package/dist/cjs/features/sync/conflicts/index.d.ts +9 -0
- package/dist/cjs/features/sync/conflicts/index.js +21 -0
- package/dist/cjs/features/sync/crossPlatformSync.d.ts +281 -0
- package/dist/cjs/features/sync/crossPlatformSync.js +551 -0
- package/dist/cjs/features/sync/devices/deviceManager.d.ts +243 -0
- package/dist/cjs/features/sync/devices/deviceManager.js +450 -0
- package/dist/cjs/features/sync/devices/index.d.ts +10 -0
- package/dist/cjs/features/sync/devices/index.js +21 -0
- package/dist/cjs/features/sync/index.d.ts +37 -0
- package/dist/cjs/features/sync/index.js +111 -0
- package/dist/cjs/features/sync/protocol/index.d.ts +11 -0
- package/dist/cjs/features/sync/protocol/index.js +23 -0
- package/dist/cjs/features/sync/protocol/messages.d.ts +348 -0
- package/dist/cjs/features/sync/protocol/messages.js +215 -0
- package/dist/cjs/features/sync/protocol/vectorClock.d.ts +164 -0
- package/dist/cjs/features/sync/protocol/vectorClock.js +256 -0
- package/dist/cjs/features/sync/syncManager.d.ts +348 -0
- package/dist/cjs/features/sync/syncManager.js +455 -0
- package/dist/cjs/features/sync/tables/index.d.ts +10 -0
- package/dist/cjs/features/sync/tables/index.js +21 -0
- package/dist/cjs/features/sync/tables/syncLogManager.d.ts +216 -0
- package/dist/cjs/features/sync/tables/syncLogManager.js +423 -0
- package/dist/cjs/features/sync/transport/httpTransport.d.ts +123 -0
- package/dist/cjs/features/sync/transport/httpTransport.js +346 -0
- package/dist/cjs/features/sync/transport/index.d.ts +12 -0
- package/dist/cjs/features/sync/transport/index.js +25 -0
- package/dist/cjs/features/sync/transport/transport.d.ts +259 -0
- package/dist/cjs/features/sync/transport/transport.js +163 -0
- package/dist/cjs/features/sync/transport/websocketTransport.d.ts +126 -0
- package/dist/cjs/features/sync/transport/websocketTransport.js +342 -0
- package/dist/cjs/fts/PostgresFts.d.ts +29 -0
- package/dist/cjs/fts/PostgresFts.js +77 -0
- package/dist/cjs/fts/SqliteFts5.d.ts +22 -0
- package/dist/cjs/fts/SqliteFts5.js +58 -0
- package/dist/cjs/index.d.ts +30 -0
- package/dist/cjs/index.js +101 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/shared/connectionGate.d.ts +94 -0
- package/dist/cjs/shared/connectionGate.js +77 -0
- package/dist/cjs/shared/errors.d.ts +23 -0
- package/dist/cjs/shared/errors.js +45 -0
- package/dist/cjs/shared/logger.d.ts +26 -0
- package/dist/cjs/shared/logger.js +40 -0
- package/dist/cjs/shared/parameterUtils.d.ts +16 -0
- package/dist/cjs/shared/parameterUtils.js +59 -0
- package/dist/cjs/shared/postgresTarget.d.ts +11 -0
- package/dist/cjs/shared/postgresTarget.js +30 -0
- package/dist/cjs/shared/segment.d.ts +43 -0
- package/dist/cjs/shared/segment.js +63 -0
- package/dist/cjs/shared/serializedTransaction.d.ts +14 -0
- package/dist/cjs/shared/serializedTransaction.js +74 -0
- package/dist/cjs/shared/splitSqlStatements.d.ts +27 -0
- package/dist/cjs/shared/splitSqlStatements.js +163 -0
- package/dist/cjs/shared/sqlPlaceholders.d.ts +48 -0
- package/dist/cjs/shared/sqlPlaceholders.js +263 -0
- package/dist/cjs/types/index.d.ts +29 -0
- package/dist/cjs/types/index.js +33 -0
- package/dist/core/portable.d.ts +23 -0
- package/dist/core/portable.d.ts.map +1 -0
- package/dist/core/portable.js +23 -0
- package/dist/core/portable.js.map +1 -0
- package/dist/features/migrations/schemaMigrations.d.ts +93 -0
- package/dist/features/migrations/schemaMigrations.d.ts.map +1 -0
- package/dist/features/migrations/schemaMigrations.js +216 -0
- package/dist/features/migrations/schemaMigrations.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/package.json +139 -24
|
@@ -0,0 +1,216 @@
|
|
|
1
|
+
import { createStorageFeatures } from '../../core/contracts/features.js';
|
|
2
|
+
import { getStorageLogger } from '../../shared/logger.js';
|
|
3
|
+
const DEFAULT_TABLE = 'schema_migrations';
|
|
4
|
+
const DEFAULT_CHECKSUM_COLUMN = 'checksum';
|
|
5
|
+
const DEFAULT_LOCK_KEY = 724313571;
|
|
6
|
+
const DEFAULT_MARKER = '-- outside transaction';
|
|
7
|
+
const DEFAULT_NAME = /^(\d+)_[a-z0-9_]+\.sql$/;
|
|
8
|
+
const IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)?$/;
|
|
9
|
+
/** The SHA-256 of `text` (its UTF-8 bytes) in hex, through Web Crypto, else node:crypto. */
|
|
10
|
+
const sha256Hex = async (text) => {
|
|
11
|
+
const subtle = globalThis.crypto?.subtle;
|
|
12
|
+
if (subtle) {
|
|
13
|
+
const digest = await subtle.digest('SHA-256', new TextEncoder().encode(text));
|
|
14
|
+
return Array.from(new Uint8Array(digest), (byte) => byte.toString(16).padStart(2, '0')).join('');
|
|
15
|
+
}
|
|
16
|
+
const { createHash } = await import('crypto');
|
|
17
|
+
return createHash('sha256').update(text).digest('hex');
|
|
18
|
+
};
|
|
19
|
+
const checkIdentifier = (what, value) => {
|
|
20
|
+
if (typeof value !== 'string' || !IDENTIFIER.test(value)) {
|
|
21
|
+
throw new Error(`${what} must be an SQL identifier (letters, digits and underscores, optionally schema-qualified); got ${JSON.stringify(value)}.`);
|
|
22
|
+
}
|
|
23
|
+
return value;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Reads the migrations of a folder in number order: `<dir>/<dialect>` when
|
|
27
|
+
* that folder exists, else `<dir>`. Files not ending in `.sql` are left out; a
|
|
28
|
+
* `.sql` name out of form, or a number used twice, is refused. Node only.
|
|
29
|
+
*/
|
|
30
|
+
export async function readSchemaMigrations(dir, options = {}) {
|
|
31
|
+
const { readdir, readFile, stat } = await import('fs/promises');
|
|
32
|
+
const path = await import('path');
|
|
33
|
+
const pattern = options.namePattern ?? DEFAULT_NAME;
|
|
34
|
+
let folder = dir;
|
|
35
|
+
if (options.dialect) {
|
|
36
|
+
const own = path.join(dir, options.dialect);
|
|
37
|
+
const isFolder = await stat(own).then((entry) => entry.isDirectory(), () => false);
|
|
38
|
+
if (isFolder)
|
|
39
|
+
folder = own;
|
|
40
|
+
}
|
|
41
|
+
const numbers = new Map();
|
|
42
|
+
const entries = [];
|
|
43
|
+
for (const name of await readdir(folder)) {
|
|
44
|
+
if (!name.endsWith('.sql'))
|
|
45
|
+
continue;
|
|
46
|
+
const number = pattern.exec(name)?.[1];
|
|
47
|
+
if (number === undefined) {
|
|
48
|
+
throw new Error(`${name}: a migration's name is digits, an underscore and a lower-case name, ending in .sql.`);
|
|
49
|
+
}
|
|
50
|
+
const key = String(Number(number));
|
|
51
|
+
if (numbers.has(key))
|
|
52
|
+
throw new Error(`${name}: the number ${number} is used twice (also ${numbers.get(key)}).`);
|
|
53
|
+
numbers.set(key, name);
|
|
54
|
+
entries.push({ name, number: Number(number) });
|
|
55
|
+
}
|
|
56
|
+
entries.sort((a, b) => a.number - b.number || a.name.localeCompare(b.name));
|
|
57
|
+
return Promise.all(entries.map(async ({ name }) => ({ name, sql: await readFile(path.join(folder, name), 'utf8') })));
|
|
58
|
+
}
|
|
59
|
+
const resolve = (adapter, options) => {
|
|
60
|
+
const table = checkIdentifier('table', options.table ?? DEFAULT_TABLE);
|
|
61
|
+
const checksumColumn = checkIdentifier('checksumColumn', options.checksumColumn ?? DEFAULT_CHECKSUM_COLUMN);
|
|
62
|
+
const key = options.lockKey ?? DEFAULT_LOCK_KEY;
|
|
63
|
+
if (typeof key === 'number' && !Number.isSafeInteger(key))
|
|
64
|
+
throw new Error(`lockKey must be a safe integer or text; got ${key}.`);
|
|
65
|
+
const dialect = createStorageFeatures(adapter).dialect.name;
|
|
66
|
+
const keyExpr = typeof key === 'number' ? '?' : 'hashtext(?)';
|
|
67
|
+
return {
|
|
68
|
+
table,
|
|
69
|
+
checksumColumn,
|
|
70
|
+
lock: dialect === 'postgres'
|
|
71
|
+
? {
|
|
72
|
+
sql: `SELECT pg_advisory_xact_lock(${keyExpr})`,
|
|
73
|
+
session: `SELECT pg_advisory_lock(${keyExpr})`,
|
|
74
|
+
unlock: `SELECT pg_advisory_unlock(${keyExpr})`,
|
|
75
|
+
params: [key],
|
|
76
|
+
}
|
|
77
|
+
: null,
|
|
78
|
+
unknown: options.unknown ?? 'refuse',
|
|
79
|
+
marker: options.outsideTransactionMarker ?? DEFAULT_MARKER,
|
|
80
|
+
dialect,
|
|
81
|
+
};
|
|
82
|
+
};
|
|
83
|
+
const ledgerDdl = (r) => r.dialect === 'postgres'
|
|
84
|
+
? `CREATE TABLE IF NOT EXISTS ${r.table} (name TEXT PRIMARY KEY, ${r.checksumColumn} TEXT NOT NULL, applied_at TIMESTAMPTZ NOT NULL DEFAULT now())`
|
|
85
|
+
: `CREATE TABLE IF NOT EXISTS ${r.table} (name TEXT PRIMARY KEY, ${r.checksumColumn} TEXT NOT NULL, applied_at TEXT NOT NULL DEFAULT (strftime('%Y-%m-%dT%H:%M:%fZ', 'now')))`;
|
|
86
|
+
/** Runs `work` in a transaction that first takes the PostgreSQL lock. */
|
|
87
|
+
const inLockedTransaction = (adapter, r, work) => adapter.transaction(async (trx) => {
|
|
88
|
+
if (r.lock)
|
|
89
|
+
await trx.get(r.lock.sql, r.lock.params);
|
|
90
|
+
return work(trx);
|
|
91
|
+
});
|
|
92
|
+
const ledgerRows = async (db, r) => {
|
|
93
|
+
const rows = await db.all(`SELECT name, ${r.checksumColumn} AS checksum FROM ${r.table}`);
|
|
94
|
+
return new Map(rows.map((row) => [row.name, row.checksum]));
|
|
95
|
+
};
|
|
96
|
+
const compare = (list, ledger) => {
|
|
97
|
+
const report = { applied: [], pending: [], changed: [], unknown: [] };
|
|
98
|
+
const carried = new Set(list.map((migration) => migration.name));
|
|
99
|
+
for (const migration of list) {
|
|
100
|
+
const recorded = ledger.get(migration.name);
|
|
101
|
+
if (recorded === undefined)
|
|
102
|
+
report.pending.push(migration.name);
|
|
103
|
+
else if (recorded !== migration.checksum)
|
|
104
|
+
report.changed.push(migration.name);
|
|
105
|
+
else
|
|
106
|
+
report.applied.push(migration.name);
|
|
107
|
+
}
|
|
108
|
+
report.unknown = [...ledger.keys()].filter((name) => !carried.has(name)).sort();
|
|
109
|
+
return report;
|
|
110
|
+
};
|
|
111
|
+
const withChecksums = (migrations) => Promise.all(migrations.map(async (migration) => ({ ...migration, checksum: await sha256Hex(migration.sql) })));
|
|
112
|
+
/** Creates the ledger if it is missing, under the lock. */
|
|
113
|
+
const ensureLedger = (adapter, r) => inLockedTransaction(adapter, r, async (trx) => {
|
|
114
|
+
await trx.exec(ledgerDdl(r));
|
|
115
|
+
});
|
|
116
|
+
/**
|
|
117
|
+
* Compares the list with the ledger and applies nothing: `applied` lists the
|
|
118
|
+
* files the ledger holds unchanged, `pending` the files it lacks, `changed`
|
|
119
|
+
* the files whose text differs from what was applied, `unknown` the ledger
|
|
120
|
+
* rows the list lacks. Creates the ledger when it is missing.
|
|
121
|
+
*/
|
|
122
|
+
export async function schemaMigrationStatus(adapter, migrations, options = {}) {
|
|
123
|
+
const r = resolve(adapter, options);
|
|
124
|
+
await ensureLedger(adapter, r);
|
|
125
|
+
return { ...compare(await withChecksums(migrations), await ledgerRows(adapter, r)), skipped: [] };
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Applies every migration the ledger lacks, in list order, and reports what
|
|
129
|
+
* it did: `applied` (this run) and `skipped` (already applied). Refuses to
|
|
130
|
+
* start when an applied file's text changed, or (unless `unknown: 'ignore'`)
|
|
131
|
+
* when the ledger holds a file the list lacks. A file runs in its own
|
|
132
|
+
* transaction and holds no BEGIN or COMMIT; a file whose first line is the
|
|
133
|
+
* outside-transaction marker runs outside one (on PostgreSQL that needs
|
|
134
|
+
* `withConnection`, which PostgresAdapter has). Stops at the first error,
|
|
135
|
+
* after rolling that file back, with an error that names it and carries the
|
|
136
|
+
* database's error as `cause`.
|
|
137
|
+
*/
|
|
138
|
+
export async function runSchemaMigrations(adapter, migrations, options = {}) {
|
|
139
|
+
const r = resolve(adapter, options);
|
|
140
|
+
const list = await withChecksums(migrations);
|
|
141
|
+
await ensureLedger(adapter, r);
|
|
142
|
+
const before = compare(list, await ledgerRows(adapter, r));
|
|
143
|
+
if (before.changed.length) {
|
|
144
|
+
throw new Error(`Applied migrations differ from the files given: ${before.changed.join(', ')}. An applied migration never changes.`);
|
|
145
|
+
}
|
|
146
|
+
if (before.unknown.length && r.unknown === 'refuse') {
|
|
147
|
+
throw new Error(`The database has applied migrations the list lacks: ${before.unknown.join(', ')}. Run the newer code, or pass unknown: 'ignore'.`);
|
|
148
|
+
}
|
|
149
|
+
const report = { applied: [], skipped: [...before.applied], pending: [], changed: [], unknown: before.unknown };
|
|
150
|
+
for (const migration of list) {
|
|
151
|
+
if (!before.pending.includes(migration.name))
|
|
152
|
+
continue;
|
|
153
|
+
let applied;
|
|
154
|
+
try {
|
|
155
|
+
applied = outsideTransaction(migration, r) ? await applyOutside(adapter, r, migration) : await applyInside(adapter, r, migration);
|
|
156
|
+
}
|
|
157
|
+
catch (error) {
|
|
158
|
+
const message = error instanceof Error ? error.message : String(error);
|
|
159
|
+
const failure = new Error(`Migration ${migration.name} failed: ${message}`);
|
|
160
|
+
failure.cause = error;
|
|
161
|
+
throw failure;
|
|
162
|
+
}
|
|
163
|
+
(applied ? report.applied : report.skipped).push(migration.name);
|
|
164
|
+
if (applied)
|
|
165
|
+
getStorageLogger().info({ migration: migration.name, table: r.table }, `Applied migration ${migration.name}.`);
|
|
166
|
+
}
|
|
167
|
+
return report;
|
|
168
|
+
}
|
|
169
|
+
const outsideTransaction = (migration, r) => migration.sql.split('\n', 1)[0]?.trim() === r.marker;
|
|
170
|
+
/** The checksum the ledger holds for `name` now, read through `db`. */
|
|
171
|
+
const recorded = async (db, r, name) => (await db.get(`SELECT ${r.checksumColumn} AS checksum FROM ${r.table} WHERE name = ?`, [name]))?.checksum;
|
|
172
|
+
/** Throws when another runner applied a different text under this name. True when the file is applied. */
|
|
173
|
+
const appliedAlready = (migration, checksum) => {
|
|
174
|
+
if (checksum === undefined)
|
|
175
|
+
return false;
|
|
176
|
+
if (checksum !== migration.checksum) {
|
|
177
|
+
throw new Error(`it was applied with checksum ${checksum} and now reads ${migration.checksum}`);
|
|
178
|
+
}
|
|
179
|
+
return true;
|
|
180
|
+
};
|
|
181
|
+
const record = (db, r, migration) => db.run(`INSERT INTO ${r.table} (name, ${r.checksumColumn}) VALUES (?, ?)`, [migration.name, migration.checksum]);
|
|
182
|
+
/** Applies one file in its own locked transaction, checking the ledger again under the lock. */
|
|
183
|
+
const applyInside = (adapter, r, migration) => inLockedTransaction(adapter, r, async (trx) => {
|
|
184
|
+
if (appliedAlready(migration, await recorded(trx, r, migration.name)))
|
|
185
|
+
return false;
|
|
186
|
+
await trx.exec(migration.sql);
|
|
187
|
+
await record(trx, r, migration);
|
|
188
|
+
return true;
|
|
189
|
+
});
|
|
190
|
+
/** Applies one marked file outside a transaction: on PostgreSQL under the session-level lock on one held connection. */
|
|
191
|
+
const applyOutside = async (adapter, r, migration) => {
|
|
192
|
+
const work = async (db) => {
|
|
193
|
+
if (appliedAlready(migration, await recorded(db, r, migration.name)))
|
|
194
|
+
return false;
|
|
195
|
+
await db.exec(migration.sql);
|
|
196
|
+
await record(db, r, migration);
|
|
197
|
+
return true;
|
|
198
|
+
};
|
|
199
|
+
if (!r.lock)
|
|
200
|
+
return work(adapter);
|
|
201
|
+
const held = adapter;
|
|
202
|
+
if (typeof held.withConnection !== 'function') {
|
|
203
|
+
throw new Error('a file outside a transaction needs an adapter with withConnection() on PostgreSQL, to hold the lock on one session');
|
|
204
|
+
}
|
|
205
|
+
const { params, session, unlock } = r.lock;
|
|
206
|
+
return held.withConnection(async (connection) => {
|
|
207
|
+
await connection.get(session, params);
|
|
208
|
+
try {
|
|
209
|
+
return await work(connection);
|
|
210
|
+
}
|
|
211
|
+
finally {
|
|
212
|
+
await connection.get(unlock, params);
|
|
213
|
+
}
|
|
214
|
+
});
|
|
215
|
+
};
|
|
216
|
+
//# sourceMappingURL=schemaMigrations.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemaMigrations.js","sourceRoot":"","sources":["../../../src/features/migrations/schemaMigrations.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -12,6 +12,7 @@ export * from './features/backup/cloudBackup.js';
|
|
|
12
12
|
export * from './features/migrations/dataExport.js';
|
|
13
13
|
export * from './features/migrations/dataImport.js';
|
|
14
14
|
export * from './features/migrations/migration.js';
|
|
15
|
+
export * from './features/migrations/schemaMigrations.js';
|
|
15
16
|
export * from './features/sync/syncManager.js';
|
|
16
17
|
export * from './shared/parameterUtils.js';
|
|
17
18
|
export { segmentFilePath, segmentName, validateSegment } from './shared/segment.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAQ9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAM5C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,cAAc,SAAS,CAAC;AAGxB,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAGhC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAQ9C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAM5C,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAMjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ export * from './features/backup/cloudBackup.js';
|
|
|
20
20
|
export * from './features/migrations/dataExport.js';
|
|
21
21
|
export * from './features/migrations/dataImport.js';
|
|
22
22
|
export * from './features/migrations/migration.js';
|
|
23
|
+
export * from './features/migrations/schemaMigrations.js';
|
|
23
24
|
export * from './features/sync/syncManager.js';
|
|
24
25
|
// Note: Cross-platform sync is available via separate entry point for cleaner imports.
|
|
25
26
|
// Usage: import { createCrossPlatformSync } from '@framers/sql-storage-adapter/sync';
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,cAAc,SAAS,CAAC;AAExB,8EAA8E;AAC9E,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,+EAA+E;AAC/E,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAE9C,wEAAwE;AACxE,yDAAyD;AACzD,2HAA2H;AAC3H,mEAAmE;AAEnE,+EAA+E;AAC/E,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,6BAA6B,CAAC;AAE5C,uFAAuF;AACvF,sFAAsF;AAEtF,+EAA+E;AAC/E,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjF,6FAA6F;AAC7F,uGAAuG;AAEvG,iFAAiF;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,cAAc,SAAS,CAAC;AAExB,8EAA8E;AAC9E,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,+EAA+E;AAC/E,cAAc,gCAAgC,CAAC;AAC/C,cAAc,yBAAyB,CAAC;AACxC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,mCAAmC,CAAC;AAClD,cAAc,4BAA4B,CAAC;AAC3C,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAE9C,wEAAwE;AACxE,yDAAyD;AACzD,2HAA2H;AAC3H,mEAAmE;AAEnE,+EAA+E;AAC/E,cAAc,+BAA+B,CAAC;AAC9C,cAAc,kCAAkC,CAAC;AACjD,cAAc,kCAAkC,CAAC;AACjD,cAAc,iCAAiC,CAAC;AAChD,cAAc,wCAAwC,CAAC;AACvD,cAAc,6BAA6B,CAAC;AAE5C,uFAAuF;AACvF,sFAAsF;AAEtF,+EAA+E;AAC/E,cAAc,yBAAyB,CAAC;AACxC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEjF,6FAA6F;AAC7F,uGAAuG;AAEvG,iFAAiF;AACjF,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAC;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAsB,MAAM,iBAAiB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,41 +1,151 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@framers/sql-storage-adapter",
|
|
3
|
-
"version": "0.7.
|
|
3
|
+
"version": "0.7.3",
|
|
4
4
|
"description": "Robust cross-platform SQL storage abstraction with automatic fallbacks and runtime detection",
|
|
5
5
|
"type": "module",
|
|
6
|
-
"main": "dist/index.js",
|
|
6
|
+
"main": "dist/cjs/index.js",
|
|
7
7
|
"module": "dist/index.js",
|
|
8
8
|
"types": "dist/index.d.ts",
|
|
9
9
|
"exports": {
|
|
10
10
|
".": {
|
|
11
|
-
"
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
"import": {
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"default": "./dist/index.js"
|
|
14
|
+
},
|
|
15
|
+
"require": {
|
|
16
|
+
"types": "./dist/cjs/index.d.ts",
|
|
17
|
+
"default": "./dist/cjs/index.js"
|
|
18
|
+
}
|
|
19
|
+
},
|
|
20
|
+
"./core": {
|
|
21
|
+
"import": {
|
|
22
|
+
"types": "./dist/core/portable.d.ts",
|
|
23
|
+
"default": "./dist/core/portable.js"
|
|
24
|
+
},
|
|
25
|
+
"require": {
|
|
26
|
+
"types": "./dist/cjs/core/portable.d.ts",
|
|
27
|
+
"default": "./dist/cjs/core/portable.js"
|
|
28
|
+
}
|
|
29
|
+
},
|
|
30
|
+
"./postgres": {
|
|
31
|
+
"import": {
|
|
32
|
+
"types": "./dist/adapters/postgresAdapter.d.ts",
|
|
33
|
+
"default": "./dist/adapters/postgresAdapter.js"
|
|
34
|
+
},
|
|
35
|
+
"require": {
|
|
36
|
+
"types": "./dist/cjs/adapters/postgresAdapter.d.ts",
|
|
37
|
+
"default": "./dist/cjs/adapters/postgresAdapter.js"
|
|
38
|
+
}
|
|
39
|
+
},
|
|
40
|
+
"./better-sqlite3": {
|
|
41
|
+
"import": {
|
|
42
|
+
"types": "./dist/adapters/betterSqliteAdapter.d.ts",
|
|
43
|
+
"default": "./dist/adapters/betterSqliteAdapter.js"
|
|
44
|
+
},
|
|
45
|
+
"require": {
|
|
46
|
+
"types": "./dist/cjs/adapters/betterSqliteAdapter.d.ts",
|
|
47
|
+
"default": "./dist/cjs/adapters/betterSqliteAdapter.js"
|
|
48
|
+
}
|
|
49
|
+
},
|
|
50
|
+
"./sqljs": {
|
|
51
|
+
"import": {
|
|
52
|
+
"types": "./dist/adapters/sqlJsAdapter.d.ts",
|
|
53
|
+
"default": "./dist/adapters/sqlJsAdapter.js"
|
|
54
|
+
},
|
|
55
|
+
"require": {
|
|
56
|
+
"types": "./dist/cjs/adapters/sqlJsAdapter.d.ts",
|
|
57
|
+
"default": "./dist/cjs/adapters/sqlJsAdapter.js"
|
|
58
|
+
}
|
|
59
|
+
},
|
|
60
|
+
"./indexeddb": {
|
|
61
|
+
"import": {
|
|
62
|
+
"types": "./dist/adapters/indexedDbAdapter.d.ts",
|
|
63
|
+
"default": "./dist/adapters/indexedDbAdapter.js"
|
|
64
|
+
},
|
|
65
|
+
"require": {
|
|
66
|
+
"types": "./dist/cjs/adapters/indexedDbAdapter.d.ts",
|
|
67
|
+
"default": "./dist/cjs/adapters/indexedDbAdapter.js"
|
|
68
|
+
}
|
|
69
|
+
},
|
|
70
|
+
"./capacitor": {
|
|
71
|
+
"import": {
|
|
72
|
+
"types": "./dist/adapters/capacitorSqliteAdapter.d.ts",
|
|
73
|
+
"default": "./dist/adapters/capacitorSqliteAdapter.js"
|
|
74
|
+
},
|
|
75
|
+
"require": {
|
|
76
|
+
"types": "./dist/cjs/adapters/capacitorSqliteAdapter.d.ts",
|
|
77
|
+
"default": "./dist/cjs/adapters/capacitorSqliteAdapter.js"
|
|
78
|
+
}
|
|
79
|
+
},
|
|
80
|
+
"./backup": {
|
|
81
|
+
"import": {
|
|
82
|
+
"types": "./dist/features/backup/cloudBackup.d.ts",
|
|
83
|
+
"default": "./dist/features/backup/cloudBackup.js"
|
|
84
|
+
},
|
|
85
|
+
"require": {
|
|
86
|
+
"types": "./dist/cjs/features/backup/cloudBackup.d.ts",
|
|
87
|
+
"default": "./dist/cjs/features/backup/cloudBackup.js"
|
|
88
|
+
}
|
|
14
89
|
},
|
|
15
90
|
"./types": {
|
|
16
|
-
"
|
|
17
|
-
|
|
18
|
-
|
|
91
|
+
"import": {
|
|
92
|
+
"types": "./dist/types/index.d.ts",
|
|
93
|
+
"default": "./dist/types/index.js"
|
|
94
|
+
},
|
|
95
|
+
"require": {
|
|
96
|
+
"types": "./dist/cjs/types/index.d.ts",
|
|
97
|
+
"default": "./dist/cjs/types/index.js"
|
|
98
|
+
}
|
|
19
99
|
},
|
|
20
100
|
"./electron": {
|
|
21
|
-
"
|
|
22
|
-
|
|
23
|
-
|
|
101
|
+
"import": {
|
|
102
|
+
"types": "./dist/adapters/electron/index.d.ts",
|
|
103
|
+
"default": "./dist/adapters/electron/index.js"
|
|
104
|
+
},
|
|
105
|
+
"require": {
|
|
106
|
+
"types": "./dist/cjs/adapters/electron/index.d.ts",
|
|
107
|
+
"default": "./dist/cjs/adapters/electron/index.js"
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
"./electron/renderer": {
|
|
111
|
+
"import": {
|
|
112
|
+
"types": "./dist/adapters/electron/renderer.d.ts",
|
|
113
|
+
"default": "./dist/adapters/electron/renderer.js"
|
|
114
|
+
},
|
|
115
|
+
"require": {
|
|
116
|
+
"types": "./dist/cjs/adapters/electron/renderer.d.ts",
|
|
117
|
+
"default": "./dist/cjs/adapters/electron/renderer.js"
|
|
118
|
+
}
|
|
24
119
|
},
|
|
25
120
|
"./electron/preload": {
|
|
26
|
-
"
|
|
27
|
-
|
|
28
|
-
|
|
121
|
+
"import": {
|
|
122
|
+
"types": "./dist/adapters/electron/preload.d.ts",
|
|
123
|
+
"default": "./dist/adapters/electron/preload.js"
|
|
124
|
+
},
|
|
125
|
+
"require": {
|
|
126
|
+
"types": "./dist/cjs/adapters/electron/preload.d.ts",
|
|
127
|
+
"default": "./dist/adapters/electron/preload.cjs"
|
|
128
|
+
}
|
|
29
129
|
},
|
|
30
130
|
"./sync": {
|
|
31
|
-
"
|
|
32
|
-
|
|
33
|
-
|
|
131
|
+
"import": {
|
|
132
|
+
"types": "./dist/features/sync/index.d.ts",
|
|
133
|
+
"default": "./dist/features/sync/index.js"
|
|
134
|
+
},
|
|
135
|
+
"require": {
|
|
136
|
+
"types": "./dist/cjs/features/sync/index.d.ts",
|
|
137
|
+
"default": "./dist/cjs/features/sync/index.js"
|
|
138
|
+
}
|
|
34
139
|
},
|
|
35
140
|
"./kv": {
|
|
36
|
-
"
|
|
37
|
-
|
|
38
|
-
|
|
141
|
+
"import": {
|
|
142
|
+
"types": "./dist/features/kv/index.d.ts",
|
|
143
|
+
"default": "./dist/features/kv/index.js"
|
|
144
|
+
},
|
|
145
|
+
"require": {
|
|
146
|
+
"types": "./dist/cjs/features/kv/index.d.ts",
|
|
147
|
+
"default": "./dist/cjs/features/kv/index.js"
|
|
148
|
+
}
|
|
39
149
|
},
|
|
40
150
|
"./package.json": "./package.json"
|
|
41
151
|
},
|
|
@@ -44,7 +154,7 @@
|
|
|
44
154
|
],
|
|
45
155
|
"scripts": {
|
|
46
156
|
"clean": "rimraf dist tsconfig.build.tsbuildinfo",
|
|
47
|
-
"build": "npm run clean && npx tsc -p tsconfig.build.json && node scripts/fix-esm-imports.mjs",
|
|
157
|
+
"build": "npm run clean && npx tsc -p tsconfig.build.json && node scripts/fix-esm-imports.mjs && node scripts/build-cjs.mjs",
|
|
48
158
|
"prepare": "test -d dist || npm run build",
|
|
49
159
|
"prepublishOnly": "npm run build && npm run test",
|
|
50
160
|
"lint": "eslint \"src/**/*.{ts,tsx}\"",
|
|
@@ -99,7 +209,11 @@
|
|
|
99
209
|
"email": "team@frame.dev"
|
|
100
210
|
},
|
|
101
211
|
"homepage": "https://framerslab.github.io/sql-storage-adapter/",
|
|
102
|
-
"sideEffects":
|
|
212
|
+
"sideEffects": [
|
|
213
|
+
"./dist/adapters/electron/preload.js",
|
|
214
|
+
"./dist/adapters/electron/preload.cjs",
|
|
215
|
+
"./dist/cjs/adapters/electron/preload.js"
|
|
216
|
+
],
|
|
103
217
|
"devDependencies": {
|
|
104
218
|
"@aws-sdk/client-s3": "^3.709.0",
|
|
105
219
|
"better-sqlite3": "^13.0.3",
|
|
@@ -129,7 +243,8 @@
|
|
|
129
243
|
"typescript-eslint": "^8.46.2",
|
|
130
244
|
"vitest": "^3.2.7",
|
|
131
245
|
"@vitest/browser": "^3.2.7",
|
|
132
|
-
"playwright": "~1.63.0"
|
|
246
|
+
"playwright": "~1.63.0",
|
|
247
|
+
"esbuild": "^0.28.2"
|
|
133
248
|
},
|
|
134
249
|
"dependencies": {
|
|
135
250
|
"pg": "^8.13.1",
|
|
@@ -137,7 +252,7 @@
|
|
|
137
252
|
},
|
|
138
253
|
"peerDependencies": {
|
|
139
254
|
"@aws-sdk/client-s3": "^3.0.0",
|
|
140
|
-
"@capacitor-community/sqlite": "^6.0.0",
|
|
255
|
+
"@capacitor-community/sqlite": "^6.0.0 || ^7.0.0 || ^8.0.0",
|
|
141
256
|
"better-sqlite3": "^12.0.0 || ^13.0.0",
|
|
142
257
|
"electron": ">=20.0.0",
|
|
143
258
|
"pg": "^8.13.1"
|