tinbase 0.21.1 → 0.22.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.
@@ -0,0 +1,166 @@
1
+ /** Schemas tinbase creates and manages itself; everything else belongs to the app. */
2
+ export const MANAGED_SCHEMAS = [
3
+ 'auth',
4
+ 'cron',
5
+ 'extensions',
6
+ 'graphql',
7
+ 'graphql_public',
8
+ 'net',
9
+ 'pgmq',
10
+ 'pgsodium',
11
+ 'realtime',
12
+ 'storage',
13
+ 'supabase_functions',
14
+ 'supabase_migrations',
15
+ 'tinbase',
16
+ 'vault',
17
+ ];
18
+ /** Managed tables whose contents are still the app's data, read without the noisy columns. */
19
+ const MANAGED_SOURCES = [
20
+ { name: 'auth.users', sql: 'select id from auth.users' },
21
+ { name: 'storage.buckets', sql: 'select id, name, public from storage.buckets' },
22
+ { name: 'storage.objects', sql: 'select bucket_id, name from storage.objects' },
23
+ { name: 'cron.job', sql: 'select jobname, schedule, command, active from cron.job' },
24
+ { name: 'vault.secrets', sql: 'select name from vault.secrets' },
25
+ ];
26
+ const SNAPSHOT_SQL = `
27
+ create table if not exists tinbase.seed_snapshot (
28
+ id int primary key default 1 check (id = 1),
29
+ state text not null check (state in ('pristine', 'diverged')),
30
+ fingerprint jsonb,
31
+ reason text,
32
+ recorded_at timestamptz not null default now()
33
+ );
34
+ `;
35
+ function ident(name) {
36
+ return '"' + name.replace(/"/g, '""') + '"';
37
+ }
38
+ async function appSchemas(engine) {
39
+ const r = await engine.query(`select nspname from pg_namespace
40
+ where nspname <> 'information_schema' and nspname not like 'pg\\_%' and nspname <> all($1)
41
+ and not exists (select 1 from pg_depend d
42
+ where d.classid = 'pg_namespace'::regclass and d.objid = pg_namespace.oid and d.deptype = 'e')
43
+ order by 1`, [MANAGED_SCHEMAS]);
44
+ return r.rows.map((x) => x.nspname);
45
+ }
46
+ async function hashRows(engine, from) {
47
+ // Hash each row, then the sorted row hashes: independent of physical order, so
48
+ // an untouched table hashes the same after a dump and reload.
49
+ const r = await engine.query(`select count(*) as n, md5(coalesce(string_agg(rh, '' order by rh), '')) as h
50
+ from (select md5(t::text) as rh from (${from}) t) s`);
51
+ return { rows: Number(r.rows[0]?.n ?? 0), hash: r.rows[0]?.h ?? '' };
52
+ }
53
+ /** Compute the current fingerprint. */
54
+ export async function fingerprint(engine) {
55
+ const schemas = await appSchemas(engine);
56
+ const tables = {};
57
+ const rel = await engine.query(`select n.nspname as schema, c.relname as name
58
+ from pg_class c join pg_namespace n on n.oid = c.relnamespace
59
+ where c.relkind in ('r', 'p') and not c.relispartition and n.nspname = any($1)
60
+ and not exists (select 1 from pg_depend d
61
+ where d.classid = 'pg_class'::regclass and d.objid = c.oid and d.deptype = 'e')
62
+ order by 1, 2`, [schemas]);
63
+ for (const t of rel.rows) {
64
+ tables[`${t.schema}.${t.name}`] = await hashRows(engine, `select * from ${ident(t.schema)}.${ident(t.name)}`);
65
+ }
66
+ for (const s of MANAGED_SOURCES) {
67
+ const [schema, table] = s.name.split('.');
68
+ const exists = await engine.query(`select to_regclass($1) is not null as ok`, [`${schema}.${table}`]);
69
+ if (exists.rows[0]?.ok)
70
+ tables[s.name] = await hashRows(engine, s.sql);
71
+ }
72
+ const shape = await engine.query(`select md5(coalesce(string_agg(x, E'\\n' order by x), '')) as h from (
73
+ select format('col %s.%s.%s %s %s', table_schema, table_name, column_name, data_type, is_nullable) as x
74
+ from information_schema.columns where table_schema = any($1)
75
+ union all
76
+ select format('fn %s.%s(%s)', n.nspname, p.proname, pg_get_function_identity_arguments(p.oid))
77
+ from pg_proc p join pg_namespace n on n.oid = p.pronamespace
78
+ where n.nspname = any($1)
79
+ and not exists (select 1 from pg_depend d
80
+ where d.classid = 'pg_proc'::regclass and d.objid = p.oid and d.deptype = 'e')
81
+ union all
82
+ select format('pol %s.%s.%s', schemaname, tablename, policyname)
83
+ from pg_policies where schemaname = any($1) or schemaname = 'storage'
84
+ ) s`, [schemas]);
85
+ return { shape: shape.rows[0]?.h ?? '', tables };
86
+ }
87
+ /** The first difference between two fingerprints, or null when they match. */
88
+ export function difference(was, now) {
89
+ for (const [name, t] of Object.entries(now.tables)) {
90
+ const before = was.tables[name];
91
+ if (!before)
92
+ return `${name} is new`;
93
+ if (before.rows !== t.rows)
94
+ return `${name} has ${t.rows} rows, was ${before.rows}`;
95
+ if (before.hash !== t.hash)
96
+ return `${name} rows changed`;
97
+ }
98
+ for (const name of Object.keys(was.tables)) {
99
+ if (!now.tables[name])
100
+ return `${name} was dropped`;
101
+ }
102
+ if (was.shape !== now.shape)
103
+ return 'schema changed outside migrations';
104
+ return null;
105
+ }
106
+ async function ensureTable(engine) {
107
+ await engine.exec(SNAPSHOT_SQL);
108
+ }
109
+ async function write(engine, state, fp, reason) {
110
+ await engine.query(`insert into tinbase.seed_snapshot (id, state, fingerprint, reason, recorded_at)
111
+ values (1, $1, $2::jsonb, $3, now())
112
+ on conflict (id) do update set state = excluded.state, fingerprint = excluded.fingerprint,
113
+ reason = excluded.reason, recorded_at = excluded.recorded_at`, [state, fp ? JSON.stringify(fp) : null, reason ?? null]);
114
+ }
115
+ /** Take the snapshot now: the current state becomes the baseline. */
116
+ export async function recordSnapshot(engine) {
117
+ await ensureTable(engine);
118
+ await write(engine, 'pristine', await fingerprint(engine));
119
+ }
120
+ /**
121
+ * Compare the database with its snapshot. A difference marks it diverged for
122
+ * good, so a database that has held real data is never treated as disposable.
123
+ */
124
+ export async function checkPristine(engine) {
125
+ await ensureTable(engine);
126
+ const r = await engine.query(`select state, fingerprint, reason from tinbase.seed_snapshot where id = 1`);
127
+ const row = r.rows[0];
128
+ if (!row)
129
+ return { pristine: false, state: 'unknown', reason: 'no seed snapshot recorded' };
130
+ if (row.state === 'diverged')
131
+ return { pristine: false, state: 'diverged', reason: row.reason ?? undefined };
132
+ const was = typeof row.fingerprint === 'string' ? JSON.parse(row.fingerprint) : row.fingerprint;
133
+ const diff = difference(was, await fingerprint(engine));
134
+ if (!diff)
135
+ return { pristine: true, state: 'pristine' };
136
+ await write(engine, 'diverged', null, diff);
137
+ return { pristine: false, state: 'diverged', reason: diff };
138
+ }
139
+ /** True when nothing beyond tinbase's own bootstrap is in the database yet. */
140
+ async function isEmpty(engine) {
141
+ const r = await engine.query(`select (select count(*) from supabase_migrations.schema_migrations)
142
+ + (select count(*) from supabase_migrations.seed_files)
143
+ + (select count(*) from auth.users) as n`);
144
+ if (Number(r.rows[0]?.n ?? 0) > 0)
145
+ return false;
146
+ // Only the app's own tables: the bootstrap may create default buckets or jobs.
147
+ const fp = await fingerprint(engine);
148
+ return Object.entries(fp.tables).every(([name, t]) => MANAGED_SOURCES.some((s) => s.name === name) || t.rows === 0);
149
+ }
150
+ /**
151
+ * Start tracking a database the first time tinbase opens it. A new, empty
152
+ * database gets its baseline. One that already held migrations or data before
153
+ * tinbase recorded snapshots is marked diverged: nothing says what in it came
154
+ * from the files.
155
+ */
156
+ export async function initSnapshot(engine) {
157
+ await ensureTable(engine);
158
+ const r = await engine.query(`select 1 from tinbase.seed_snapshot where id = 1`);
159
+ if (r.rows.length > 0)
160
+ return;
161
+ if (await isEmpty(engine))
162
+ await recordSnapshot(engine);
163
+ else
164
+ await write(engine, 'diverged', null, 'existed before tinbase recorded seed snapshots');
165
+ }
166
+ //# sourceMappingURL=pristine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pristine.js","sourceRoot":"","sources":["../../src/db/pristine.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -75,7 +75,7 @@ const CORS_HEADERS = {
75
75
  'access-control-allow-origin': '*',
76
76
  'access-control-allow-methods': 'GET, POST, PUT, PATCH, DELETE, OPTIONS, HEAD',
77
77
  'access-control-allow-headers': 'authorization, apikey, content-type, prefer, accept, accept-profile, content-profile, range, x-upsert, x-client-info, x-supabase-api-version, cache-control',
78
- 'access-control-expose-headers': 'content-range, range-unit, content-profile',
78
+ 'access-control-expose-headers': 'content-range, range-unit, content-profile, accept-ranges',
79
79
  'access-control-max-age': '86400',
80
80
  };
81
81
  /**
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAC1E,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,gBAAgB,EAAqB,MAAM,wBAAwB,CAAA;AAC5E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,eAAe,EAAwB,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EACL,kBAAkB,GAQnB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAA;AAEnE,cAAc,YAAY,CAAA;AAC1B,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAA;AACzD,OAAO,EAAE,WAAW,EAAmB,MAAM,iBAAiB,CAAA;AAC9D,OAAO,EAAE,YAAY,EAA4B,MAAM,kBAAkB,CAAA;AACzE,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,sBAAsB,EAAqB,MAAM,eAAe,CAAA;AACnJ,OAAO,EAAE,iBAAiB,EAA6F,MAAM,2BAA2B,CAAA;AACxJ,OAAO,EAAE,cAAc,EAAE,UAAU,EAAsF,MAAM,qBAAqB,CAAA;AACpJ,OAAO,EAAE,SAAS,EAAgC,MAAM,iBAAiB,CAAA;AACzE,OAAO,EAAE,cAAc,EAA2B,MAAM,sBAAsB,CAAA;AAC9E,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAA2C,MAAM,wBAAwB,CAAA;AAClG,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAC9C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,eAAe,EAA4C,MAAM,uBAAuB,CAAA;AACjG,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC5D,OAAO,EAAE,UAAU,EAAoB,MAAM,kBAAkB,CAAA;AAC/D,OAAO,EAAE,gBAAgB,EAAwB,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,cAAc,EAAE,WAAW,EAAuB,MAAM,qBAAqB,CAAA;AACtF,OAAO,EAAE,SAAS,EAAkB,MAAM,iBAAiB,CAAA;AAyC3D;;;;;GAKG;AACH,MAAM,SAAS,GACb,2FAA2F;IAC3F,4FAA4F;IAC5F,yCAAyC,CAAA;AAE3C,qFAAqF;AACrF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,UAAU,CAAC,GAAG,CAAA;AAE7C,gFAAgF;AAChF,SAAS,KAAK,CAAC,CAAS;IACtB,IAAI,CAAC,GAAG,UAAU,CAAA;IAClB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QAClC,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QACpB,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,CAAC,CAAA;IAC9B,CAAC;IACD,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAChD,CAAC;AAED,MAAM,YAAY,GAA2B;IAC3C,6BAA6B,EAAE,GAAG;IAClC,8BAA8B,EAAE,8CAA8C;IAC9E,8BAA8B,EAC5B,6JAA6J;IAC/J,+BAA+B,EAAE,2DAA2D;IAC5F,wBAAwB,EAAE,OAAO;CAClC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,SAAwB,EAAE;IAC5D,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,kBAAkB,CAAA;IACxD,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,IAAI,wBAAwB,CAAA;IAC1D,4EAA4E;IAC5E,sCAAsC;IACtC,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,OAAO,CAAA;IACvD,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAA;IAE1C,0EAA0E;IAC1E,iCAAiC;IACjC,MAAM,IAAI,GAAG,IAAI,SAAS,EAAE,CAAA;IAC5B,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7D,MAAM,GAAG,GAAG,CAAC,CAAS,EAAE,EAAE;QACxB,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QACZ,OAAO,CAAC,CAAC,CAAC,CAAA;IACZ,CAAC,CAAA;IAED,2EAA2E;IAC3E,2EAA2E;IAC3E,yEAAyE;IACzE,MAAM,eAAe,GAAG,MAAM,CAAC,QAAQ,KAAK,SAAS,CAAA;IACrD,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,iBAAiB,SAAS,EAAE,CAAA;IAEhE,4EAA4E;IAC5E,iDAAiD;IACjD,iBAAiB,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,eAAe,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC,CAAA;IAE/E,2EAA2E;IAC3E,sCAAsC;IACtC,IAAI,MAAM,GAAG,MAAM,CAAC,MAAM,CAAA;IAC1B,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,EAAE,uBAAuB,EAAE,GAAG,MAAM,MAAM,CAAC,+BAA+B,CAAC,CAAA;QACjF,MAAM,GAAG,MAAM,uBAAuB,CAAC,EAAE,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,CAAA;IAClF,CAAC;IAED,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,CAAC,CAAA;IAExE,0EAA0E;IAC1E,+EAA+E;IAC/E,6EAA6E;IAC7E,MAAM,OAAO,GAAsC,EAAE,CAAA;IACrD,MAAM,WAAW,GAAG,KAAK,EAAE,CAAU,EAAkB,EAAE;QACvD,KAAK,MAAM,EAAE,IAAI,OAAO,CAAC,OAAO,EAAE;YAAE,MAAM,OAAO,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC/E,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAChC,MAAM,CAAC,CAAA;IACT,CAAC,CAAA;IAED,IAAI,CAAC;QACH,IAAI,MAAM,CAAC,UAAU,EAAE,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAChD,qEAAqE;YACrE,oEAAoE;YACpE,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,EAAE,MAAM,CAAC,OAAO,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAA;YACxG,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC;gBAAE,GAAG,CAAC,uBAAuB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;YACxE,MAAM,MAAM,GAAG,EAAE,CAAC,gBAAgB,CAAA;YAClC,IAAI,MAAM,EAAE,CAAC;gBACX,GAAG,CACD,qBAAqB,MAAM,CAAC,IAAI,KAAK,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI;oBACrG,kEAAkE;oBAClE,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,OAAO,CAAC,MAAM,6BAA6B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CACpH,CAAA;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,WAAW,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAED,4EAA4E;IAC5E,0EAA0E;IAC1E,2EAA2E;IAC3E,2EAA2E;IAC3E,8BAA8B;IAC9B,MAAM,YAAY,GAChB,OAAO,OAAO,KAAK,WAAW,IAAI,OAAO,CAAC,GAAG,EAAE,QAAQ,KAAK,YAAY,CAAA;IAC1E,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAA;IAE7G,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,cAAc,EAAE,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAA;IAC/F,6EAA6E;IAC7E,oEAAoE;IACpE,EAAE;IACF,0EAA0E;IAC1E,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,OAAO,GAAG,CAAC,GAAgB,EAAE,EAAE,CACnC,GAAG,CACD,MAAM,CAAC,WAAW;QAChB,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,OAAO,MAAM,GAAG,CAAC,IAAI,EAAE;QAC7D,CAAC,CAAC,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,OAAO,GAAG,CACnD,CAAA;IACH,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,WAAW,CAAC,OAAO,CAAC,CAAA;IAC7D,wEAAwE;IACxE,uEAAuE;IACvE,2EAA2E;IAC3E,4EAA4E;IAC5E,sEAAsE;IACtE,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM;QAClC,CAAC,CAAC;YACE,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClB,IAAI,CAAC;oBACH,MAAM,MAAM,CAAC,MAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;gBAChC,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,GAAG,CAAC,oBAAoB,GAAG,CAAC,EAAE,aAAa,GAAG,CAAC,OAAO,MAAM,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;oBACzG,MAAM,CAAC,CAAA;gBACT,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,CAAA;YACd,CAAC;SACF;QACH,CAAC,CAAC,KAAM,CAAA;IACV,sEAAsE;IACtE,6EAA6E;IAC7E,mEAAmE;IACnE,MAAM,YAAY,GAAG,MAAM,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,YAAY,CAAC,CAAA;IACpE,MAAM,oBAAoB,GAAG,mBAAmB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAA;IAErE,+EAA+E;IAC/E,8EAA8E;IAC9E,uEAAuE;IACvE,4EAA4E;IAC5E,wEAAwE;IACxE,0EAA0E;IAC1E,6DAA6D;IAC7D,MAAM,MAAM,GAAG,CAAC,GAAe,EAAE,EAAE,CACjC,GAAG,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,YAAY,GAAG,CAAC,EAAE,EAAE,CAAC,CAAA;IACpF,MAAM,eAAe,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAA;IAC5G,MAAM,SAAS,GAAc;QAC3B,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;YAClB,MAAM,EAAE,GAAG,YAAY,CAAC,SAAS,CAAA;YACjC,MAAM,QAAQ,GAAqB,MAAM,CAAC,SAAS;gBACjD,CAAC,CAAC,MAAM,CAAC,SAAS;gBAClB,CAAC,CAAC,EAAE,CAAC,UAAU,IAAI,EAAE,CAAC,SAAS;oBAC7B,CAAC,CAAC,IAAI,eAAe,CAAC,EAAE,GAAG,EAAE,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;oBAClF,CAAC,CAAC,IAAI,CAAA;YACV,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,IAAI,KAAK,EAAE,CAAC;oBACV,MAAM,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;oBACxB,MAAM,CAAC,GAAG,CAAC,CAAA;oBACX,OAAM;gBACR,CAAC;gBACD,GAAG,CAAC,2BAA2B,GAAG,CAAC,EAAE,0CAA0C,CAAC,CAAA;gBAChF,OAAM;YACR,CAAC;YACD,IAAI,EAAiB,CAAA;YACrB,IAAI,CAAC;gBACH,EAAE,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAC/B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,GAAG,CAAC,mBAAmB,GAAG,CAAC,EAAE,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;gBAC/E,MAAM,CAAC,CAAA;YACT,CAAC;YACD,MAAM,CAAC,GAAG,CAAC,CAAA;YACX,OAAO,EAAE,CAAA;QACX,CAAC;KACF,CAAA;IACD,MAAM,OAAO,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,aAAa,IAAI,IAAI,mBAAmB,EAAE,EAAE;QACxF,SAAS;QACT,oBAAoB,EAAE,MAAM,CAAC,oBAAoB;QACjD,UAAU,EAAE,MAAM,CAAC,iBAAiB,IAAI,IAAI;QAC5C,GAAG;KACJ,CAAC,CAAA;IACF,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM;QAAE,MAAM,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACvE,MAAM,OAAO,CAAC,SAAS,EAAE,CAAA;IACzB,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,EAAE,EAAE;QAC/B,SAAS;QACT,OAAO;QACP,cAAc;QACd,SAAS;QACT,qBAAqB,EAAE,MAAM,CAAC,qBAAqB;QACnD,MAAM;QACN,SAAS;QACT,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,eAAe;QACf,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,cAAc,EAAE,MAAM,CAAC,cAAc;QACrC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,YAAY,EAAE,MAAM,CAAC,YAAY;QACjC,wBAAwB,EAAE,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC;QACvD,QAAQ,EAAE,YAAY;QACtB,WAAW,EAAE,IAAI,WAAW,CAAC,MAAM,CAAC,cAAc,CAAC;KACpD,CAAC,CAAA;IACF,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;IAE/B,MAAM,QAAQ,GAAG,IAAI,cAAc,CAAC,EAAE,EAAE,SAAS,CAAC,CAAA;IAClD,MAAM,QAAQ,GAAG,IAAI,eAAe,CAClC,EAAE,EACF,MAAM,CAAC,YAAY,EACnB,CAAC,CAAkB,EAAE,EAAE,CACrB,GAAG,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,CAAC,EAC1I,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,CAC9B,CAAA;IACD,MAAM,IAAI,GAAG,IAAI,WAAW,CAAC,EAAE,CAAC,CAAA;IAChC,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,EAAE,EAAE,MAAM,CAAC,SAAS,CAAC,CAAA;IAC5D,MAAM,GAAG,GAAG,IAAI,UAAU,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,SAAS,EAAE,CAAC,CAAc,EAAE,EAAE,CAC5E,GAAG,CAAC,SAAS,CAAC,CAAC,MAAM,IAAI,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAC1G,CAAA;IAED,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAA;QACtB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAA;QACnC,IAAI,MAAM,CAAC,QAAQ,EAAE,MAAM;YAAE,MAAM,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;QAClE,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAA;QAC1C,IAAI,CAAC,KAAK,EAAE,CAAA;QACZ,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAC/B,SAAS,CAAC,KAAK,EAAE,CAAA;QACjB,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAA;QACpC,GAAG,CAAC,KAAK,EAAE,CAAA;QACX,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,WAAW,CAAC,CAAC,CAAC,CAAA;IACtB,CAAC;IAED,MAAM,KAAK,GACT,MAAM,CAAC,SAAS,YAAY,GAAG;QAC7B,CAAC,CAAC,MAAM,CAAC,SAAS;QAClB,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,CAAA;IACrD,MAAM,KAAK,GAAG;QACZ,YAAY,EAAE,OAAO;QACrB,iBAAiB,EAAE,OAAO;QAC1B,yBAAyB,EAAE,cAAc;QACzC,GAAG,CAAC,MAAM,CAAC,WAAW,IAAI,EAAE,CAAC;KAC9B,CAAA;IAED,MAAM,KAAK,GAAG,IAAI,QAAQ,CACxB,EAAE,EACF,IAAI,EACJ,EAAE,OAAO,EAAE,SAAS,EAAE,EACtB;QACE,aAAa,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QAChC,cAAc,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;QACxD,KAAK,EAAE,KAAK,KAAK,IAAI;QACrB,GAAG,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,SAAS,EAAE;QAC7D,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,EAAE;QAC/B,YAAY;QACZ,oBAAoB;QACpB,WAAW,EAAE,KAAK;QAClB,OAAO;KACR,CACF,CAAA;IAED,4EAA4E;IAC5E,6EAA6E;IAC7E,iCAAiC;IACjC,eAAe,EAAE,CAAA;IACjB,MAAM,SAAS,GAAG,IAAI,gBAAgB,CAAC,KAAkC,EAAE,KAAK,CAAC,CAAA;IAEjF,KAAK,UAAU,cAAc,CAAC,GAAY,EAAE,GAAQ;QAClD,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAA;QAC9C,MAAM,MAAM,GAAG,KAAK,EAAE,WAAW,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACjF,MAAM,KAAK,GAAG,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACnF,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,IAAI,EAAE,oDAAoD,EAAE,CAAC,EAAE;gBACnI,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CACH,CAAA;QACH,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,SAAS,CAAC,CAAA;QAChD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,iBAAiB,EAAE,CAAC,EAAE;gBAC3D,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CACH,CAAA;QACH,CAAC;QACD,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAA;QACnE,IAAI,CAAC,CAAC,MAAM,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC9D,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,iBAAiB,IAAI,EAAE,EAAE,CAAC,EAAE;gBACjE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CACH,CAAA;QACH,CAAC;QACD,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,CAAA;IACzB,CAAC;IAED,KAAK,UAAU,MAAM,CAAC,GAAY;QAChC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QAC5B,MAAM,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAA;QAEzB,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;YAC7B,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,CAAC,CAAA;QACnE,CAAC;QACD,IAAI,IAAI,KAAK,GAAG,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvC,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAA;gBAC1B,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,EAAE;oBACnE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CAAC,CACH,CAAA;YACH,CAAC;YAAC,OAAO,GAAQ,EAAE,CAAC;gBAClB,GAAG,CAAC,uCAAuC,GAAG,EAAE,OAAO,IAAI,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;gBACzE,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,EAAE;oBACrE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CAAC,CACH,CAAA;YACH,CAAC;QACH,CAAC;QAED,wEAAwE;QACxE,qEAAqE;QACrE,0EAA0E;QAC1E,oEAAoE;QACpE,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5C,8DAA8D;YAC9D,gEAAgE;YAChE,+BAA+B;YAC/B,MAAM,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;YAC5C,MAAM,OAAO,GAA2B;gBACtC,cAAc,EAAE,0BAA0B;gBAC1C,eAAe,EAAE,UAAU;gBAC3B,yBAAyB,EAAE,SAAS;gBACpC,wBAAwB,EAAE,SAAS;gBACnC,iBAAiB,EAAE,MAAM;aAC1B,CAAA;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,WAAW,GAAG,wDAAwD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI;oBACrG,6DAA6D;oBAC7D,0DAA0D,CAAA;gBAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC;oBACzC,CAAC,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,GAAG,SAAS,CAAC;oBACxD,CAAC,CAAC,WAAW,GAAG,UAAU,CAAA;gBAC5B,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;YACrD,CAAC;YACD,OAAO,CAAC,MAAM,CAAC,GAAG,UAAU,CAAA;YAC5B,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,KAAK,UAAU,EAAE,CAAC;gBACpD,OAAO,IAAI,QAAQ,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;YACrD,CAAC;YACD,OAAO,IAAI,QAAQ,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,CAAC,CAAA;QAC3D,CAAC;QAED,0EAA0E;QAC1E,uEAAuE;QACvE,4EAA4E;QAC5E,wEAAwE;QACxE,mEAAmE;QACnE,0CAA0C;QAC1C,IAAI,KAAK,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;YACjG,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACxC,CAAC;QAED,2CAA2C;QAC3C,IACE,IAAI,CAAC,UAAU,CAAC,4BAA4B,CAAC;YAC7C,IAAI,CAAC,UAAU,CAAC,0BAA0B,CAAC;YAC3C,IAAI,CAAC,UAAU,CAAC,kCAAkC,CAAC;YACnD,IAAI,CAAC,UAAU,CAAC,gCAAgC,CAAC,EACjD,CAAC;YACD,IAAI,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAClD,OAAO,QAAQ,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;YACjF,CAAC;QACH,CAAC;QACD,IAAI,MAAM,CAAC,WAAW,KAAK,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAChE,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,0BAA0B,EAAE,CAAC,EAAE;gBACpE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CACH,CAAA;QACH,CAAC;QACD,IACE,CAAC,IAAI,KAAK,iBAAiB,IAAI,IAAI,KAAK,oBAAoB,IAAI,IAAI,KAAK,mBAAmB,CAAC;YAC7F,CAAC,GAAG,CAAC,MAAM,KAAK,KAAK,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,EAC/C,CAAC;YACD,0EAA0E;YAC1E,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,GAAG,CAAC,CAAC,CAAA;QAC9E,CAAC;QACD,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YACjC,uEAAuE;YACvE,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAC1E,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YACpE,IAAI,CAAC,SAAS,EAAE,CAAC;gBACf,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,CAAC,EAAE;oBACvE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CAAC,CACH,CAAA;YACH,CAAC;YACD,MAAM,GAAG,GAAmB,EAAE,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC,IAAI,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;YACzF,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACnD,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,GAAG,EAAE,GAAG,CAAC,CAAA;QAC1C,IAAI,GAAG,YAAY,QAAQ;YAAE,OAAO,GAAG,CAAA;QAEvC,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAClF,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;YAAE,OAAO,QAAQ,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACpF,IAAI,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;YAAE,OAAO,QAAQ,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5F,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,OAAO,QAAQ,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,CAAA;QACxF,IAAI,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACpC,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,0CAA0C,EAAE,CAAC,EAAE;gBACpF,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CACH,CAAA;QACH,CAAC;QACD,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,qBAAqB,IAAI,EAAE,EAAE,CAAC,EAAE;YACrE,MAAM,EAAE,GAAG;YACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;SAChD,CAAC,CACH,CAAA;IACH,CAAC;IAED,qEAAqE;IACrE,8EAA8E;IAC9E,0EAA0E;IAC1E,MAAM,UAAU,GAAG,KAAK,EAAE,GAAY,EAAqB,EAAE;QAC3D,IAAI,CAAC;YACH,OAAO,MAAM,MAAM,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;YACtD,GAAG,CAAC,sBAAsB,GAAG,EAAE,CAAC,CAAA;YAChC,OAAO,QAAQ,CACb,IAAI,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,uBAAuB,EAAE,CAAC,EAAE;gBACjE,MAAM,EAAE,GAAG;gBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;aAChD,CAAC,CACH,CAAA;QACH,CAAC;IACH,CAAC,CAAA;IAED,4EAA4E;IAC5E,mDAAmD;IACnD,MAAM,WAAW,GAAG,KAAK,EAAE,GAAY,EAAqB,EAAE;QAC5D,MAAM,GAAG,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,CAAA;QACjC,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAA;YACnC,IAAI,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,gBAAgB,EAAE,CAAC;gBAC3D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAA;gBAC/E,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,KAAK,CAAC,CAAA;YACxD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,qCAAqC;QACvC,CAAC;QACD,OAAO,GAAG,CAAA;IACZ,CAAC,CAAA;IAED,OAAO;QACL,KAAK,EAAE,WAAW;QAClB,EAAE;QACF,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,IAAI;QACJ,GAAG;QACH,SAAS;QACT,OAAO;QACP,cAAc;QACd,SAAS;QACT,IAAI;QACJ,KAAK;QACL,OAAO,EAAE,CAAC,UAAU,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC;QACvE,KAAK,EAAE,KAAK,IAAI,EAAE;YAChB,IAAI,CAAC,IAAI,EAAE,CAAA;YACX,MAAM,IAAI,CAAC,IAAI,EAAE,CAAA;YACjB,MAAM,GAAG,CAAC,IAAI,EAAE,CAAA;YAChB,MAAM,SAAS,CAAC,IAAI,EAAE,CAAA;YACtB,QAAQ,CAAC,WAAW,EAAE,CAAA;YACtB,QAAQ,CAAC,IAAI,EAAE,CAAA;YACf,MAAM,EAAE,CAAC,KAAK,EAAE,CAAA;QAClB,CAAC;KACF,CAAA;AACH,CAAC;AAED,+FAA+F;AAC/F,SAAS,QAAQ,CAAC,GAAa;IAC7B,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChD,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC"}
@@ -19,6 +19,10 @@ export declare class FsStorageDriver implements StorageDriver {
19
19
  put(key: string, data: Uint8Array): Promise<void>;
20
20
  /** Read object bytes, or null if the key does not exist. */
21
21
  get(key: string): Promise<Uint8Array | null>;
22
+ /** Size of an object in bytes, or null if the key does not exist. */
23
+ size(key: string): Promise<number | null>;
24
+ /** Read bytes `start`..`end` (inclusive) without loading the whole file. */
25
+ getRange(key: string, start: number, end: number): Promise<Uint8Array | null>;
22
26
  /** Delete an object; a missing key is not an error. */
23
27
  delete(key: string): Promise<void>;
24
28
  /** Delete several objects in sequence. */
@@ -2,7 +2,7 @@
2
2
  * Filesystem-backed storage driver (Node only). Persists object bytes as files
3
3
  * under a single root directory, with path-traversal protection on every key.
4
4
  */
5
- import { mkdir, readFile, rm, writeFile } from 'node:fs/promises';
5
+ import { mkdir, open, readFile, rm, stat, writeFile } from 'node:fs/promises';
6
6
  import { dirname, join, normalize, sep } from 'node:path';
7
7
  /**
8
8
  * Node-only {@link StorageDriver} that keeps object bytes as files under a
@@ -45,6 +45,43 @@ export class FsStorageDriver {
45
45
  throw e;
46
46
  }
47
47
  }
48
+ /** Size of an object in bytes, or null if the key does not exist. */
49
+ async size(key) {
50
+ try {
51
+ return (await stat(this.resolve(key))).size;
52
+ }
53
+ catch (e) {
54
+ if (e.code === 'ENOENT')
55
+ return null;
56
+ throw e;
57
+ }
58
+ }
59
+ /** Read bytes `start`..`end` (inclusive) without loading the whole file. */
60
+ async getRange(key, start, end) {
61
+ let fh;
62
+ try {
63
+ fh = await open(this.resolve(key), 'r');
64
+ }
65
+ catch (e) {
66
+ if (e.code === 'ENOENT')
67
+ return null;
68
+ throw e;
69
+ }
70
+ try {
71
+ const buf = new Uint8Array(end - start + 1);
72
+ let read = 0;
73
+ while (read < buf.length) {
74
+ const { bytesRead } = await fh.read(buf, read, buf.length - read, start + read);
75
+ if (bytesRead === 0)
76
+ break;
77
+ read += bytesRead;
78
+ }
79
+ return read === buf.length ? buf : buf.subarray(0, read);
80
+ }
81
+ finally {
82
+ await fh.close();
83
+ }
84
+ }
48
85
  /** Delete an object; a missing key is not an error. */
49
86
  async delete(key) {
50
87
  await rm(this.resolve(key), { force: true });
@@ -1 +1 @@
1
- {"version":3,"file":"fs-driver.js","sourceRoot":"","sources":["../../src/node/fs-driver.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,MAAM,WAAW,CAAA;AAGzD;;;GAGG;AACH,MAAM,OAAO,eAAe;IACN;IAApB,YAAoB,IAAY;QAAZ,SAAI,GAAJ,IAAI,CAAQ;IAAG,CAAC;IAEpC;;;;;;;OAOG;IACK,OAAO,CAAC,GAAW;QACzB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAA;QAC5C,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,wBAAwB,GAAG,EAAE,CAAC,CAAA;QAChD,CAAC;QACD,OAAO,IAAI,CAAA;IACb,CAAC;IAED,iEAAiE;IACjE,KAAK,CAAC,GAAG,CAAC,GAAW,EAAE,IAAgB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;QAC9B,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAC/C,MAAM,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC7B,CAAC;IAED,4DAA4D;IAC5D,KAAK,CAAC,GAAG,CAAC,GAAW;QACnB,IAAI,CAAC;YACH,OAAO,IAAI,UAAU,CAAC,MAAM,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1D,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAA2B,CAAC,IAAI,KAAK,QAAQ;gBAAE,OAAO,IAAI,CAAA;YAC/D,MAAM,CAAC,CAAA;QACT,CAAC;IACH,CAAC;IAED,uDAAuD;IACvD,KAAK,CAAC,MAAM,CAAC,GAAW;QACtB,MAAM,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IAC9C,CAAC;IAED,0CAA0C;IAC1C,KAAK,CAAC,UAAU,CAAC,IAAc;QAC7B,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IAC5C,CAAC;CACF"}
1
+ {"version":3,"file":"fs-driver.js","sourceRoot":"","sources":["../../src/node/fs-driver.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,55 @@
1
+ import { type PristineState } from '../../db/pristine.js';
2
+ export declare const DUMP_FORMAT = "tinbase-dump";
3
+ export declare const DUMP_VERSION = 1;
4
+ /** Where `tinbase start` looks for an archive to restore before it opens the database (relative to --dir). */
5
+ export declare const RESTORE_FILE: string;
6
+ export interface DumpManifest {
7
+ format: typeof DUMP_FORMAT;
8
+ version: number;
9
+ createdAt: string;
10
+ /** server_version of the database that was dumped */
11
+ postgres: string;
12
+ /**
13
+ * sha256 of the roles, the dump and every stored file (path and bytes). Equal
14
+ * hashes mean equal contents, so a host can skip keeping an archive identical
15
+ * to the last one; the archive bytes themselves differ by `createdAt`.
16
+ */
17
+ contentHash: string;
18
+ pristine: PristineState;
19
+ }
20
+ export interface ExportOptions {
21
+ dataDir: string;
22
+ storageDir: string;
23
+ /** archive to write (.tar.gz) */
24
+ outFile: string;
25
+ log?: (m: string) => void;
26
+ }
27
+ export interface ImportOptions {
28
+ dataDir: string;
29
+ storageDir: string;
30
+ /** archive written by {@link exportProject} */
31
+ file: string;
32
+ /** replace an existing (stopped) data directory and storage */
33
+ force?: boolean;
34
+ log?: (m: string) => void;
35
+ }
36
+ /** Export the database and stored files to `outFile`. */
37
+ export declare function exportProject(opts: ExportOptions): Promise<{
38
+ bytes: number;
39
+ manifest: DumpManifest;
40
+ }>;
41
+ /** Read an archive's manifest without importing it. */
42
+ export declare function readManifest(file: string): Promise<DumpManifest>;
43
+ /**
44
+ * Roles as `pg_dumpall` wrote them, minus the bootstrap superuser: a new cluster
45
+ * already has it, and creating it again fails the load.
46
+ */
47
+ export declare function rolesSql(globals: string): string;
48
+ /**
49
+ * Create a database from an archive written by {@link exportProject}.
50
+ *
51
+ * The archive loads into a new cluster beside the data directory, which takes
52
+ * the data directory's place only once everything loaded. A bad archive or a
53
+ * failed load leaves the existing database and storage exactly as they were.
54
+ */
55
+ export declare function importProject(opts: ImportOptions): Promise<DumpManifest>;
@@ -0,0 +1,192 @@
1
+ /**
2
+ * Logical export and import of a native-engine project: a portable archive of
3
+ * the database and its stored files.
4
+ *
5
+ * The archive is a tar.gz holding `globals.sql` (roles, from `pg_dumpall
6
+ * --globals-only`, without passwords), `dump.sql` (`pg_dump` of the database),
7
+ * `storage/` (the uploaded objects) and `manifest.json`. A seed-only database
8
+ * dumps to a few KB where a copy of its data directory is tens of MB, and a dump
9
+ * still loads after a Postgres major upgrade, where a data directory does not.
10
+ *
11
+ * Export works against a running server - `pg_dump` reads one consistent
12
+ * snapshot, so nothing has to stop - or starts Postgres briefly when none is
13
+ * running. Import needs the data directory empty and no server on it: it creates
14
+ * the cluster, loads roles and data, and stops; the next `tinbase start` opens it
15
+ * like any existing database.
16
+ */
17
+ import { execFile } from 'node:child_process';
18
+ import { createHash } from 'node:crypto';
19
+ import { cp, mkdir, mkdtemp, readFile, readdir, rename, rm, stat, writeFile } from 'node:fs/promises';
20
+ import { existsSync } from 'node:fs';
21
+ import { tmpdir } from 'node:os';
22
+ import { join } from 'node:path';
23
+ import { promisify } from 'node:util';
24
+ import { checkPristine } from '../../db/pristine.js';
25
+ import { attachNativeEngine, createNativeEngine, ensurePostgres, readRunningPostmaster } from './engine.js';
26
+ const run = promisify(execFile);
27
+ export const DUMP_FORMAT = 'tinbase-dump';
28
+ export const DUMP_VERSION = 1;
29
+ /** Where `tinbase start` looks for an archive to restore before it opens the database (relative to --dir). */
30
+ export const RESTORE_FILE = join('.tinbase', 'restore.tar.gz');
31
+ /** A live postmaster for `dataDir`: the running server's, or one started for this call. */
32
+ async function postmasterFor(dataDir, log) {
33
+ const attached = await attachNativeEngine(dataDir);
34
+ const engine = attached ?? (await createNativeEngine({ dataDir, log }));
35
+ await engine.query('select 1'); // connects lazily; the pid file says ready only once it serves
36
+ const pm = readRunningPostmaster(dataDir);
37
+ if (!pm) {
38
+ await engine.close();
39
+ throw new Error(`no ready postgres on ${dataDir}`);
40
+ }
41
+ return { engine, socketDir: pm.socketDir, port: pm.port };
42
+ }
43
+ async function pgTool(name) {
44
+ return join(await ensurePostgres(), 'bin', name);
45
+ }
46
+ async function pgArgs(socketDir, port) {
47
+ return ['-h', socketDir, '-p', String(port), '-U', 'postgres', '--no-password'];
48
+ }
49
+ async function dirHasEntries(dir) {
50
+ try {
51
+ return (await readdir(dir)).length > 0;
52
+ }
53
+ catch {
54
+ return false;
55
+ }
56
+ }
57
+ /** Every regular file under `dir`, as paths relative to it, sorted. */
58
+ async function filesUnder(dir, rel = '') {
59
+ const out = [];
60
+ for (const e of await readdir(join(dir, rel), { withFileTypes: true })) {
61
+ const p = rel ? `${rel}/${e.name}` : e.name;
62
+ if (e.isDirectory())
63
+ out.push(...(await filesUnder(dir, p)));
64
+ else if (e.isFile())
65
+ out.push(p);
66
+ }
67
+ return out.sort();
68
+ }
69
+ /** See {@link DumpManifest.contentHash}: roles, dump and stored files of a staged export. */
70
+ async function contentHash(stage) {
71
+ const h = createHash('sha256');
72
+ for (const name of ['globals.sql', 'dump.sql']) {
73
+ // pg_dump brackets its output in \restrict / \unrestrict with a fresh random
74
+ // key every run (it stops a crafted dump from running psql meta-commands on
75
+ // restore), so those lines differ between dumps of the same database.
76
+ const sql = (await readFile(join(stage, name), 'utf8')).replace(/^\\(un)?restrict .*$/gm, '');
77
+ h.update(`${name}\0`).update(sql);
78
+ }
79
+ for (const p of await filesUnder(join(stage, 'storage'))) {
80
+ h.update(`storage/${p}\0`).update(await readFile(join(stage, 'storage', p)));
81
+ }
82
+ return h.digest('hex');
83
+ }
84
+ /** Export the database and stored files to `outFile`. */
85
+ export async function exportProject(opts) {
86
+ const stage = await mkdtemp(join(tmpdir(), 'tb-export-'));
87
+ const { engine, socketDir, port } = await postmasterFor(opts.dataDir, opts.log);
88
+ try {
89
+ const conn = await pgArgs(socketDir, port);
90
+ await run(await pgTool('pg_dumpall'), [...conn, '--globals-only', '--no-role-passwords', '-f', join(stage, 'globals.sql')]);
91
+ await run(await pgTool('pg_dump'), [...conn, '-d', 'postgres', '-f', join(stage, 'dump.sql')], {
92
+ maxBuffer: 16 * 1024 * 1024,
93
+ });
94
+ await mkdir(join(stage, 'storage'), { recursive: true });
95
+ if (existsSync(opts.storageDir))
96
+ await cp(opts.storageDir, join(stage, 'storage'), { recursive: true });
97
+ const version = await engine.query(`select current_setting('server_version') as v`);
98
+ const pristine = await checkPristine(engine).catch((e) => ({ pristine: false, state: 'unknown', reason: e?.message ?? String(e) }));
99
+ const manifest = {
100
+ format: DUMP_FORMAT,
101
+ version: DUMP_VERSION,
102
+ createdAt: new Date().toISOString(),
103
+ postgres: version.rows[0]?.v ?? '',
104
+ contentHash: await contentHash(stage),
105
+ pristine,
106
+ };
107
+ await writeFile(join(stage, 'manifest.json'), JSON.stringify(manifest, null, 2) + '\n');
108
+ await run('tar', ['-czf', opts.outFile, '-C', stage, '.']);
109
+ return { bytes: (await stat(opts.outFile)).size, manifest };
110
+ }
111
+ finally {
112
+ await engine.close();
113
+ await rm(stage, { recursive: true, force: true });
114
+ }
115
+ }
116
+ /** Read an archive's manifest without importing it. */
117
+ export async function readManifest(file) {
118
+ const { stdout } = await run('tar', ['-xzOf', file, './manifest.json']);
119
+ return parseManifest(stdout);
120
+ }
121
+ function parseManifest(text) {
122
+ const m = JSON.parse(text);
123
+ if (m?.format !== DUMP_FORMAT)
124
+ throw new Error('not a tinbase export archive');
125
+ if (m.version !== DUMP_VERSION)
126
+ throw new Error(`unsupported tinbase export version ${m.version}`);
127
+ return m;
128
+ }
129
+ /**
130
+ * Roles as `pg_dumpall` wrote them, minus the bootstrap superuser: a new cluster
131
+ * already has it, and creating it again fails the load.
132
+ */
133
+ export function rolesSql(globals) {
134
+ return globals
135
+ .split('\n')
136
+ .filter((line) => line.trim() !== 'CREATE ROLE postgres;')
137
+ .join('\n');
138
+ }
139
+ /**
140
+ * Create a database from an archive written by {@link exportProject}.
141
+ *
142
+ * The archive loads into a new cluster beside the data directory, which takes
143
+ * the data directory's place only once everything loaded. A bad archive or a
144
+ * failed load leaves the existing database and storage exactly as they were.
145
+ */
146
+ export async function importProject(opts) {
147
+ if (readRunningPostmaster(opts.dataDir)) {
148
+ throw new Error(`a server is running on ${opts.dataDir}; stop it before importing`);
149
+ }
150
+ const replacing = await dirHasEntries(opts.dataDir);
151
+ if (replacing && !opts.force)
152
+ throw new Error(`${opts.dataDir} already holds a database; pass force to replace it`);
153
+ const stage = await mkdtemp(join(tmpdir(), 'tb-import-'));
154
+ const newData = `${opts.dataDir}.importing`;
155
+ const newStorage = `${opts.storageDir}.importing`;
156
+ try {
157
+ await run('tar', ['-xzf', opts.file, '-C', stage]);
158
+ const manifest = parseManifest(await readFile(join(stage, 'manifest.json'), 'utf8'));
159
+ await writeFile(join(stage, 'roles.sql'), rolesSql(await readFile(join(stage, 'globals.sql'), 'utf8')));
160
+ await rm(newData, { recursive: true, force: true });
161
+ const engine = await createNativeEngine({ dataDir: newData, log: opts.log });
162
+ try {
163
+ await engine.query('select 1');
164
+ const pm = readRunningPostmaster(newData);
165
+ if (!pm)
166
+ throw new Error(`postgres did not come up on ${newData}`);
167
+ const psql = await pgTool('psql');
168
+ const conn = [...(await pgArgs(pm.socketDir, pm.port)), '-d', 'postgres', '-q', '-v', 'ON_ERROR_STOP=1'];
169
+ await run(psql, [...conn, '-f', join(stage, 'roles.sql')]);
170
+ await run(psql, [...conn, '--single-transaction', '-f', join(stage, 'dump.sql')], {
171
+ maxBuffer: 16 * 1024 * 1024,
172
+ });
173
+ }
174
+ finally {
175
+ await engine.close();
176
+ }
177
+ await rm(newStorage, { recursive: true, force: true });
178
+ await cp(join(stage, 'storage'), newStorage, { recursive: true });
179
+ // Everything loaded: swap the new database and storage in.
180
+ await rm(opts.dataDir, { recursive: true, force: true });
181
+ await rename(newData, opts.dataDir);
182
+ await rm(opts.storageDir, { recursive: true, force: true });
183
+ await rename(newStorage, opts.storageDir);
184
+ return manifest;
185
+ }
186
+ finally {
187
+ await rm(stage, { recursive: true, force: true });
188
+ await rm(newData, { recursive: true, force: true });
189
+ await rm(newStorage, { recursive: true, force: true });
190
+ }
191
+ }
192
+ //# sourceMappingURL=dump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../../src/node/native/dump.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,8 @@ export declare class MemoryStorageDriver implements StorageDriver {
11
11
  private files;
12
12
  put(key: string, data: Uint8Array): Promise<void>;
13
13
  get(key: string): Promise<Uint8Array | null>;
14
+ size(key: string): Promise<number | null>;
15
+ getRange(key: string, start: number, end: number): Promise<Uint8Array | null>;
14
16
  delete(key: string): Promise<void>;
15
17
  deleteMany(keys: string[]): Promise<void>;
16
18
  }