neon 3.0.0 → 3.1.1
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 +70 -5
- package/dist/_chunks/auth_selection-DGgq6ifc.js +83 -0
- package/dist/_chunks/cmd_pipeline-CUbBO9U_.js +2818 -0
- package/dist/_chunks/credentials-MYdHdKah.js +188 -0
- package/dist/_chunks/env-NbA61JR3.js +585 -0
- package/dist/_chunks/env_services-Tz9G4JeT.js +531 -0
- package/dist/_chunks/paths-DMq0Lt7a.js +151 -0
- package/dist/_chunks/profiles-Ir29rqns.js +217 -0
- package/dist/_chunks/psql-DWH-kc69.js +2169 -0
- package/dist/_chunks/rolldown-runtime-D7D4PA-g.js +13 -0
- package/dist/_chunks/secure_file-BucZj4yQ.js +39 -0
- package/dist/analytics.js +163 -207
- package/dist/api.js +815 -758
- package/dist/auth.js +121 -141
- package/dist/auth_context.js +39 -53
- package/dist/cli.js +4 -7
- package/dist/commands/api.js +220 -250
- package/dist/commands/api_keys.js +251 -314
- package/dist/commands/auth.js +283 -328
- package/dist/commands/bootstrap.js +372 -437
- package/dist/commands/branches.js +304 -455
- package/dist/commands/bucket.js +374 -514
- package/dist/commands/checkout.js +213 -298
- package/dist/commands/config.js +573 -690
- package/dist/commands/connection_string.js +137 -165
- package/dist/commands/data_api.js +238 -260
- package/dist/commands/databases.js +67 -76
- package/dist/commands/deploy.js +31 -25
- package/dist/commands/dev.js +639 -719
- package/dist/commands/diff.js +156 -200
- package/dist/commands/env.js +255 -305
- package/dist/commands/functions.js +275 -355
- package/dist/commands/index.js +70 -65
- package/dist/commands/init.js +84 -119
- package/dist/commands/inspect.js +55 -55
- package/dist/commands/ip_allow.js +88 -120
- package/dist/commands/link.js +874 -1019
- package/dist/commands/logs.js +291 -0
- package/dist/commands/neon_auth.js +725 -933
- package/dist/commands/operations.js +34 -25
- package/dist/commands/orgs.js +28 -18
- package/dist/commands/profile.js +615 -846
- package/dist/commands/projects.js +313 -373
- package/dist/commands/psql.js +60 -58
- package/dist/commands/roles.js +55 -58
- package/dist/commands/schema_diff.js +87 -131
- package/dist/commands/set_context.js +34 -26
- package/dist/commands/snapshots.js +288 -413
- package/dist/commands/status.js +41 -37
- package/dist/commands/user.js +21 -10
- package/dist/commands/vpc_endpoints.js +85 -113
- package/dist/config.js +7 -6
- package/dist/config_format.js +50 -66
- package/dist/config_template.js +128 -157
- package/dist/context.js +183 -235
- package/dist/current_branch_fast_path.js +40 -49
- package/dist/dev/env.js +2 -446
- package/dist/dev/functions.js +54 -68
- package/dist/dev/inputs.js +46 -58
- package/dist/dev/runtime.js +135 -164
- package/dist/dev/websocket.js +766 -959
- package/dist/env.js +27 -33
- package/dist/env_file.js +118 -132
- package/dist/env_services.js +2 -51
- package/dist/errors.js +57 -68
- package/dist/functions_api.js +45 -43
- package/dist/help.js +189 -140
- package/dist/index.js +182 -257
- package/dist/init/agents.js +137 -118
- package/dist/init/auth.js +58 -68
- package/dist/init/bootstrap.js +325 -396
- package/dist/init/build_config.js +4 -2
- package/dist/init/detect_agent.js +56 -101
- package/dist/init/editors.js +35 -52
- package/dist/init/enrich_output.js +51 -66
- package/dist/init/extension.js +134 -171
- package/dist/init/inspect.js +179 -266
- package/dist/init/interactive.js +510 -622
- package/dist/init/neonctl.js +117 -168
- package/dist/init/orchestrate.js +157 -173
- package/dist/init/phases/auth.js +188 -202
- package/dist/init/phases/cleanup.js +23 -23
- package/dist/init/phases/db.js +251 -277
- package/dist/init/phases/getting_started.js +213 -223
- package/dist/init/phases/mcp.js +174 -224
- package/dist/init/phases/migrations.js +247 -248
- package/dist/init/phases/neon_auth.js +114 -133
- package/dist/init/phases/setup.js +546 -703
- package/dist/init/phases/skills.js +75 -86
- package/dist/init/phases/status.js +72 -67
- package/dist/init/resolve_context.js +102 -99
- package/dist/init/route_command.js +91 -98
- package/dist/init/skills.js +174 -218
- package/dist/init/vsix.js +77 -99
- package/dist/log.js +17 -16
- package/dist/neon_services.js +104 -129
- package/dist/parameters.gen.js +481 -471
- package/dist/pkg.js +17 -19
- package/dist/profile_keys.js +44 -47
- package/dist/psql/cli.js +44 -47
- package/dist/psql/command/cmd_cond.js +231 -406
- package/dist/psql/command/cmd_connect.js +557 -764
- package/dist/psql/command/cmd_copy.js +728 -984
- package/dist/psql/command/cmd_describe.js +1499 -1688
- package/dist/psql/command/cmd_format.js +733 -905
- package/dist/psql/command/cmd_io.js +2 -2193
- package/dist/psql/command/cmd_lo.js +297 -359
- package/dist/psql/command/cmd_meta.js +727 -878
- package/dist/psql/command/cmd_misc.js +138 -172
- package/dist/psql/command/cmd_pipeline.js +2 -1148
- package/dist/psql/command/cmd_restrict.js +119 -155
- package/dist/psql/command/cmd_show.js +529 -688
- package/dist/psql/command/dispatch.js +260 -325
- package/dist/psql/command/inputQueue.js +35 -33
- package/dist/psql/command/shared.js +49 -63
- package/dist/psql/complete/filenames.js +90 -133
- package/dist/psql/complete/index.js +59 -97
- package/dist/psql/complete/matcher.js +236 -300
- package/dist/psql/complete/psqlVars.js +218 -223
- package/dist/psql/complete/queries.js +159 -177
- package/dist/psql/complete/rules.js +1493 -2299
- package/dist/psql/core/common.js +2 -1253
- package/dist/psql/core/help.js +456 -546
- package/dist/psql/core/mainloop.js +692 -1303
- package/dist/psql/core/prompt.js +391 -408
- package/dist/psql/core/settings.js +429 -644
- package/dist/psql/core/sqlHelp.js +480 -554
- package/dist/psql/core/startup.js +2 -846
- package/dist/psql/core/syncVars.js +67 -110
- package/dist/psql/core/variables.js +156 -278
- package/dist/psql/describe/formatters.js +884 -1285
- package/dist/psql/describe/processNamePattern.js +173 -260
- package/dist/psql/describe/queries.js +1368 -2403
- package/dist/psql/describe/versionGate.js +32 -41
- package/dist/psql/index.js +2 -2030
- package/dist/psql/io/history.js +232 -271
- package/dist/psql/io/input.js +103 -108
- package/dist/psql/io/lineEditor/buffer.js +238 -319
- package/dist/psql/io/lineEditor/complete.js +135 -213
- package/dist/psql/io/lineEditor/filename.js +139 -148
- package/dist/psql/io/lineEditor/index.js +653 -870
- package/dist/psql/io/lineEditor/keymap.js +544 -702
- package/dist/psql/io/lineEditor/vt100.js +294 -341
- package/dist/psql/io/pgpass.js +158 -187
- package/dist/psql/io/pgservice.js +146 -183
- package/dist/psql/io/psqlrc.js +328 -403
- package/dist/psql/print/aligned.js +1020 -1683
- package/dist/psql/print/asciidoc.js +180 -214
- package/dist/psql/print/crosstab.js +281 -442
- package/dist/psql/print/csv.js +48 -70
- package/dist/psql/print/html.js +195 -226
- package/dist/psql/print/json.js +75 -88
- package/dist/psql/print/latex.js +291 -364
- package/dist/psql/print/pager.js +171 -242
- package/dist/psql/print/troff.js +194 -226
- package/dist/psql/print/unaligned.js +69 -95
- package/dist/psql/print/units.js +167 -169
- package/dist/psql/scanner/slash.js +428 -483
- package/dist/psql/scanner/sql.js +445 -889
- package/dist/psql/scanner/stringutils.js +309 -379
- package/dist/psql/types/index.js +8 -7
- package/dist/psql/types/scanner.js +25 -22
- package/dist/psql/wire/connection.js +2042 -2803
- package/dist/psql/wire/copy.js +84 -100
- package/dist/psql/wire/notify.js +39 -59
- package/dist/psql/wire/pipeline.js +305 -518
- package/dist/psql/wire/protocol.js +349 -417
- package/dist/psql/wire/sasl.js +180 -265
- package/dist/psql/wire/tls.js +400 -561
- package/dist/storage_api.js +115 -129
- package/dist/test_utils/fixtures.js +94 -113
- package/dist/test_utils/oauth_server.js +10 -7
- package/dist/test_utils/project_dir.js +33 -0
- package/dist/utils/ai_gateway_notice.js +131 -162
- package/dist/utils/api_enums.js +21 -28
- package/dist/utils/auth.js +10 -4
- package/dist/utils/branch_notice.js +20 -19
- package/dist/utils/branch_picker.js +83 -89
- package/dist/utils/cli_name.js +15 -12
- package/dist/utils/compute_units.js +20 -27
- package/dist/utils/config_diff.js +127 -158
- package/dist/utils/enrichers.js +95 -148
- package/dist/utils/esbuild.js +130 -189
- package/dist/utils/flags.js +35 -47
- package/dist/utils/formats.js +8 -15
- package/dist/utils/git_diff.js +69 -80
- package/dist/utils/inspect_db.js +101 -143
- package/dist/utils/inspect_queries.js +179 -142
- package/dist/utils/middlewares.js +39 -45
- package/dist/utils/openapi.js +87 -99
- package/dist/utils/package_manager.js +312 -110
- package/dist/utils/point_in_time.js +49 -53
- package/dist/utils/psql.js +89 -106
- package/dist/utils/service_picker.js +55 -58
- package/dist/utils/string.js +5 -5
- package/dist/utils/ui.js +38 -55
- package/dist/utils/write_sync.js +26 -35
- package/dist/utils/zip.js +4 -3
- package/dist/writer.js +67 -87
- package/package.json +11 -6
- package/dist/_shared/auth_selection.js +0 -86
- package/dist/_shared/credentials.js +0 -209
- package/dist/_shared/env-core/env.js +0 -558
- package/dist/_shared/env-core/reuse-secrets.js +0 -223
- package/dist/_shared/paths.js +0 -148
- package/dist/_shared/profiles.js +0 -276
- package/dist/_shared/secure_file.js +0 -43
package/dist/psql/io/input.js
CHANGED
|
@@ -1,120 +1,115 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Interactive line input for the psql REPL — the shared "read one line from
|
|
3
|
-
* the user" primitive used by `\prompt` and `\password`.
|
|
4
|
-
*
|
|
5
|
-
* Models upstream psql's password / prompt reading:
|
|
6
|
-
* - `simple_prompt` (`src/port/sprompt.c`) reads a line with optional echo
|
|
7
|
-
* suppression. On a TTY it disables terminal echo for the duration of the
|
|
8
|
-
* read (we emulate this with Node's raw mode + manual character handling);
|
|
9
|
-
* when stdin is NOT a TTY it falls back to a plain line read and the
|
|
10
|
-
* `echo` flag is a no-op — the line is still consumed. We match that: a
|
|
11
|
-
* non-interactive caller piping a password in still has it read.
|
|
12
|
-
* - `\prompt` (`exec_command_prompt`) reads with echo on; `\prompt -`
|
|
13
|
-
* (no-echo password form) and `\password` read with echo suppressed.
|
|
14
|
-
*
|
|
15
|
-
* The terminal handling is parameterised over the input/output streams so the
|
|
16
|
-
* non-TTY path (the only one testable without a real PTY) can be exercised in
|
|
17
|
-
* unit tests; production callers use {@link readLine} with the process
|
|
18
|
-
* defaults.
|
|
19
|
-
*/
|
|
20
1
|
import { createInterface } from "node:readline";
|
|
2
|
+
//#region src/psql/io/input.ts
|
|
3
|
+
/**
|
|
4
|
+
* Interactive line input for the psql REPL — the shared "read one line from
|
|
5
|
+
* the user" primitive used by `\prompt` and `\password`.
|
|
6
|
+
*
|
|
7
|
+
* Models upstream psql's password / prompt reading:
|
|
8
|
+
* - `simple_prompt` (`src/port/sprompt.c`) reads a line with optional echo
|
|
9
|
+
* suppression. On a TTY it disables terminal echo for the duration of the
|
|
10
|
+
* read (we emulate this with Node's raw mode + manual character handling);
|
|
11
|
+
* when stdin is NOT a TTY it falls back to a plain line read and the
|
|
12
|
+
* `echo` flag is a no-op — the line is still consumed. We match that: a
|
|
13
|
+
* non-interactive caller piping a password in still has it read.
|
|
14
|
+
* - `\prompt` (`exec_command_prompt`) reads with echo on; `\prompt -`
|
|
15
|
+
* (no-echo password form) and `\password` read with echo suppressed.
|
|
16
|
+
*
|
|
17
|
+
* The terminal handling is parameterised over the input/output streams so the
|
|
18
|
+
* non-TTY path (the only one testable without a real PTY) can be exercised in
|
|
19
|
+
* unit tests; production callers use {@link readLine} with the process
|
|
20
|
+
* defaults.
|
|
21
|
+
*/
|
|
21
22
|
/** True when `stream` is a TTY whose echo we can suppress via raw mode. */
|
|
22
23
|
const isRawCapableTty = (stream) => {
|
|
23
|
-
|
|
24
|
-
|
|
24
|
+
const s = stream;
|
|
25
|
+
return Boolean(s.isTTY) && typeof s.setRawMode === "function";
|
|
25
26
|
};
|
|
26
27
|
/**
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
}
|
|
45
|
-
return readEchoLine(prompt, input, output);
|
|
28
|
+
* Read one line of input, optionally suppressing echo.
|
|
29
|
+
*
|
|
30
|
+
* - `echo: false` on a TTY → put the terminal in raw mode, echo nothing,
|
|
31
|
+
* accumulate characters until Enter, then restore cooked mode. Used for
|
|
32
|
+
* password entry (`\password`, `\prompt -`).
|
|
33
|
+
* - `echo: true`, or any non-TTY input → a plain line read. On a non-TTY the
|
|
34
|
+
* `echo` flag is a no-op: we still consume and return the line, matching
|
|
35
|
+
* upstream `simple_prompt`'s behaviour with redirected stdin.
|
|
36
|
+
*
|
|
37
|
+
* The returned string excludes the trailing newline. EOF before any newline
|
|
38
|
+
* resolves to whatever was typed so far (empty string if nothing).
|
|
39
|
+
*/
|
|
40
|
+
const readLine = (prompt, opts) => {
|
|
41
|
+
const input = opts.input ?? process.stdin;
|
|
42
|
+
const output = opts.output ?? process.stderr;
|
|
43
|
+
if (!opts.echo && isRawCapableTty(input)) return readNoEchoTty(prompt, input, output);
|
|
44
|
+
return readEchoLine(prompt, input, output);
|
|
46
45
|
};
|
|
47
46
|
/** Plain, echoing (or non-TTY) line read via `node:readline`. */
|
|
48
47
|
const readEchoLine = (prompt, input, output) => {
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
});
|
|
48
|
+
const rl = createInterface({
|
|
49
|
+
input,
|
|
50
|
+
output,
|
|
51
|
+
terminal: false
|
|
52
|
+
});
|
|
53
|
+
return new Promise((resolve) => {
|
|
54
|
+
let settled = false;
|
|
55
|
+
const settle = (line) => {
|
|
56
|
+
if (settled) return;
|
|
57
|
+
settled = true;
|
|
58
|
+
rl.close();
|
|
59
|
+
resolve(line);
|
|
60
|
+
};
|
|
61
|
+
if (prompt.length > 0) output.write(prompt);
|
|
62
|
+
rl.on("line", (l) => {
|
|
63
|
+
settle(l);
|
|
64
|
+
});
|
|
65
|
+
rl.on("close", () => {
|
|
66
|
+
settle("");
|
|
67
|
+
});
|
|
68
|
+
});
|
|
71
69
|
};
|
|
72
70
|
/**
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
71
|
+
* No-echo read on a raw-capable TTY. Mirrors upstream `simple_prompt`'s
|
|
72
|
+
* echo-off branch: switch to raw mode, gather bytes, never echo them, and
|
|
73
|
+
* restore on Enter / EOF / interrupt. Backspace edits the buffer; Ctrl-C and
|
|
74
|
+
* Ctrl-D abort with whatever has been typed (empty on a clean Ctrl-C).
|
|
75
|
+
*/
|
|
78
76
|
const readNoEchoTty = (prompt, input, output) => {
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
buf += ch;
|
|
116
|
-
}
|
|
117
|
-
};
|
|
118
|
-
input.on("data", onData);
|
|
119
|
-
});
|
|
77
|
+
return new Promise((resolve) => {
|
|
78
|
+
if (prompt.length > 0) output.write(prompt);
|
|
79
|
+
input.setRawMode(true);
|
|
80
|
+
input.resume();
|
|
81
|
+
input.setEncoding("utf8");
|
|
82
|
+
let buf = "";
|
|
83
|
+
const finish = (result) => {
|
|
84
|
+
input.setRawMode(false);
|
|
85
|
+
input.pause();
|
|
86
|
+
input.removeListener("data", onData);
|
|
87
|
+
output.write("\n");
|
|
88
|
+
resolve(result);
|
|
89
|
+
};
|
|
90
|
+
const onData = (chunk) => {
|
|
91
|
+
for (const ch of chunk) {
|
|
92
|
+
if (ch === "\n" || ch === "\r") {
|
|
93
|
+
finish(buf);
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
if (ch === "") {
|
|
97
|
+
finish("");
|
|
98
|
+
return;
|
|
99
|
+
}
|
|
100
|
+
if (ch === "") {
|
|
101
|
+
finish(buf);
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
if (ch === "" || ch === "\b") {
|
|
105
|
+
buf = buf.slice(0, -1);
|
|
106
|
+
continue;
|
|
107
|
+
}
|
|
108
|
+
buf += ch;
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
input.on("data", onData);
|
|
112
|
+
});
|
|
120
113
|
};
|
|
114
|
+
//#endregion
|
|
115
|
+
export { readLine };
|