@mason-data/cli 0.8.0 → 0.10.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/README.md +19 -8
- package/dist/src/api/error.js +4 -0
- package/dist/src/api/postgres/catalog-worker.js +49 -2
- package/dist/src/api/postgres/catalog.js +166 -32
- package/dist/src/api/postgres/listener.js +11 -3
- package/dist/src/api/postgres/proxy.js +129 -0
- package/dist/src/api/postgres/schema.js +6 -0
- package/dist/src/api/postgres/server.js +527 -103
- package/dist/src/api/postgres/translate.js +47 -2
- package/dist/src/cli/background.js +18 -19
- package/dist/src/cli/bridge-stdin.js +101 -0
- package/dist/src/cli/command.js +337 -15
- package/dist/src/cli/commands.js +458 -169
- package/dist/src/cli/credentials.js +182 -0
- package/dist/src/cli/demo.js +2 -2
- package/dist/src/cli/deploy.js +680 -0
- package/dist/src/cli/dev.js +148 -27
- package/dist/src/cli/doctor.js +122 -36
- package/dist/src/cli/generated-files.js +143 -0
- package/dist/src/cli/guides.js +116 -16
- package/dist/src/cli/hosted.js +850 -0
- package/dist/src/cli/init.js +154 -33
- package/dist/src/cli/login.js +292 -0
- package/dist/src/cli/machine.js +125 -40
- package/dist/src/cli/main.js +59 -10
- package/dist/src/cli/mason.cjs +17 -0
- package/dist/src/cli/mcp.js +17 -14
- package/dist/src/cli/output-gate.js +176 -0
- package/dist/src/cli/page-share.js +96 -0
- package/dist/src/cli/pg-tls.js +1 -1
- package/dist/src/cli/pin.js +6 -2
- package/dist/src/cli/pool-size.cjs +85 -0
- package/dist/src/cli/ports.js +2 -0
- package/dist/src/cli/preflight.js +130 -39
- package/dist/src/cli/project.js +100 -1
- package/dist/src/cli/readiness.js +42 -6
- package/dist/src/cli/registry.js +89 -36
- package/dist/src/cli/replica-hosted.js +1324 -0
- package/dist/src/cli/replica.js +114 -0
- package/dist/src/cli/replication-mode.js +5 -0
- package/dist/src/cli/request-filter.js +16 -6
- package/dist/src/cli/roles.js +2 -1
- package/dist/src/cli/run-server.js +179 -9
- package/dist/src/cli/secret-input.js +193 -0
- package/dist/src/cli/security.js +57 -10
- package/dist/src/cli/serve.js +65 -9
- package/dist/src/cli/share-run.js +51 -8
- package/dist/src/cli/share.js +23 -18
- package/dist/src/cli/source-edit.js +10 -4
- package/dist/src/cli/source-role.js +343 -0
- package/dist/src/cli/sources.js +50 -23
- package/dist/src/cli/style.js +16 -1
- package/dist/src/cli/supervise.js +15 -23
- package/dist/src/cli/sync.js +17 -8
- package/dist/src/cli/token-hosted.js +343 -0
- package/dist/src/cli/tunnel.js +1 -1
- package/dist/src/cli/ui-hosted.js +163 -0
- package/dist/src/cli/ui-ssh.js +460 -0
- package/dist/src/cli/ui.js +162 -17
- package/dist/src/cli/usage.js +19 -15
- package/dist/src/cli/user-hosted.js +364 -0
- package/dist/src/cli/user.js +275 -105
- package/dist/src/demo/seed.js +26 -0
- package/dist/src/duck/analyze.js +36 -20
- package/dist/src/duck/collation.js +266 -0
- package/dist/src/duck/constant-key.js +94 -0
- package/dist/src/duck/distinct-key.js +283 -26
- package/dist/src/duck/events.js +39 -8
- package/dist/src/duck/executor-worker.js +2 -2
- package/dist/src/duck/executor.js +6 -5
- package/dist/src/duck/explain.js +4 -0
- package/dist/src/duck/functions.js +448 -49
- package/dist/src/duck/gaps.js +34 -16
- package/dist/src/duck/generated-plan.js +1070 -0
- package/dist/src/duck/generated.js +906 -0
- package/dist/src/duck/grants.js +1 -1
- package/dist/src/duck/held-types.js +64 -0
- package/dist/src/duck/history.js +4 -0
- package/dist/src/duck/jsonb-order.js +9 -12
- package/dist/src/duck/kept-route.js +6 -5
- package/dist/src/duck/kept.js +9 -7
- package/dist/src/duck/late.js +1469 -40
- package/dist/src/duck/libc-bound.js +341 -0
- package/dist/src/duck/libc-order.js +892 -126
- package/dist/src/duck/pg-eval-worker.js +7 -1
- package/dist/src/duck/pg-eval.js +6 -4
- package/dist/src/duck/pgtree.js +774 -23
- package/dist/src/duck/plan.js +275 -30
- package/dist/src/duck/publication.js +14 -0
- package/dist/src/duck/requests.js +9 -5
- package/dist/src/duck/resolved.js +117 -2
- package/dist/src/duck/rewrite.js +4567 -583
- package/dist/src/duck/row-filter.js +12 -6
- package/dist/src/duck/statement.js +19 -0
- package/dist/src/duck/store.js +294 -68
- package/dist/src/duck/stream.js +9 -5
- package/dist/src/duck/sync.js +602 -126
- package/dist/src/duck/token.js +4 -1
- package/dist/src/duck/types.js +63 -7
- package/dist/src/duck/usage.js +6 -4
- package/dist/src/duck/users.js +110 -9
- package/dist/src/duck/verified.js +159 -2
- package/dist/src/duck/views.js +4 -3
- package/dist/src/lib/cidr.js +177 -0
- package/dist/src/lib/database-url.js +55 -10
- package/dist/src/lib/instant.js +50 -0
- package/dist/src/lib/log-buffer.js +13 -4
- package/dist/src/lib/log-read.js +196 -0
- package/dist/src/lib/pg-numeric.js +387 -49
- package/dist/src/lib/secret-mask.js +142 -0
- package/dist/src/lib/table-sync.js +84 -19
- package/dist/src/web/app.js +9 -4
- package/dist/src/web/pages/status.js +178 -13
- package/dist/src/web/pages/syncs.js +1 -1
- package/dist/src/web/pages/tables.js +8 -3
- package/dist/src/web/pages/users.js +4 -3
- package/dist/src/web/shared.js +19 -3
- package/package.json +8 -7
|
@@ -12,6 +12,7 @@ import { PGlite } from "@electric-sql/pglite";
|
|
|
12
12
|
const { port, signal } = workerData;
|
|
13
13
|
const db = new PGlite();
|
|
14
14
|
let zone = null;
|
|
15
|
+
let order = null;
|
|
15
16
|
const reply = (m) => { port.postMessage(m); Atomics.store(signal, 0, 1); Atomics.notify(signal, 0); };
|
|
16
17
|
port.on("message", (m) => {
|
|
17
18
|
void (async () => {
|
|
@@ -21,6 +22,11 @@ port.on("message", (m) => {
|
|
|
21
22
|
await db.exec(`SET TimeZone = '${m.timeZone.replace(/'/g, "''")}'`);
|
|
22
23
|
zone = m.timeZone;
|
|
23
24
|
}
|
|
25
|
+
// the session's DateStyle: a text read as a date in its field order (`'01/02/2026'` under `ISO, DMY`)
|
|
26
|
+
if (order !== m.dateStyle) {
|
|
27
|
+
await db.exec(`SET DateStyle = '${m.dateStyle.replace(/'/g, "''")}'`);
|
|
28
|
+
order = m.dateStyle;
|
|
29
|
+
}
|
|
24
30
|
const result = await db.query(m.sql, m.params, { rowMode: "array" });
|
|
25
31
|
// an array as the JSON of its elements' text (the `list` kind, src/duck/functions.ts)
|
|
26
32
|
const textOf = (v) => v === null ? null : Array.isArray(v) ? JSON.stringify(v.map(textOf)) : String(v);
|
|
@@ -28,7 +34,7 @@ port.on("message", (m) => {
|
|
|
28
34
|
}
|
|
29
35
|
catch (e) {
|
|
30
36
|
const err = e;
|
|
31
|
-
reply({ ok: false, code: typeof err.code === "string" ? err.code : "XX000", message: err.message ?? String(e) });
|
|
37
|
+
reply({ ok: false, code: typeof err.code === "string" ? err.code : "XX000", message: err.message ?? String(e), ...(typeof err.detail === "string" ? { detail: err.detail } : {}) });
|
|
32
38
|
}
|
|
33
39
|
})();
|
|
34
40
|
});
|
package/dist/src/duck/pg-eval.js
CHANGED
|
@@ -17,7 +17,9 @@ import { runnable } from "../lib/runnable.js";
|
|
|
17
17
|
const TIMEOUT_MS = 30_000;
|
|
18
18
|
export class PgEvalError extends Error {
|
|
19
19
|
code;
|
|
20
|
-
|
|
20
|
+
/** Postgres's DETAIL, where it gave one */
|
|
21
|
+
detail;
|
|
22
|
+
constructor(code, message, detail) { super(message); this.code = code; this.detail = detail; }
|
|
21
23
|
}
|
|
22
24
|
let current = null;
|
|
23
25
|
function start() {
|
|
@@ -33,11 +35,11 @@ function start() {
|
|
|
33
35
|
return { worker, port: port1, signal };
|
|
34
36
|
}
|
|
35
37
|
/** Runs one statement on the worker's Postgres and returns its rows as text; Postgres's error is a PgEvalError. */
|
|
36
|
-
export function pgEvalSync(sql, params, timeZone) {
|
|
38
|
+
export function pgEvalSync(sql, params, timeZone, dateStyle = "ISO, MDY") {
|
|
37
39
|
current ??= start();
|
|
38
40
|
const w = current;
|
|
39
41
|
Atomics.store(w.signal, 0, 0);
|
|
40
|
-
w.port.postMessage({ sql, params, timeZone });
|
|
42
|
+
w.port.postMessage({ sql, params, timeZone, dateStyle });
|
|
41
43
|
const waited = Atomics.wait(w.signal, 0, 0, TIMEOUT_MS);
|
|
42
44
|
const got = receiveMessageOnPort(w.port);
|
|
43
45
|
if (waited === "timed-out" || got === undefined) {
|
|
@@ -47,7 +49,7 @@ export function pgEvalSync(sql, params, timeZone) {
|
|
|
47
49
|
}
|
|
48
50
|
const r = got.message;
|
|
49
51
|
if (!r.ok)
|
|
50
|
-
throw new PgEvalError(r.code, r.message);
|
|
52
|
+
throw new PgEvalError(r.code, r.message, r.detail);
|
|
51
53
|
return r.rows;
|
|
52
54
|
}
|
|
53
55
|
/** Stops the worker (a store that closes). */
|