neon 2.47.0 → 3.1.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.
Files changed (198) hide show
  1. package/README.md +54 -0
  2. package/dist/_shared/auth_selection.js +76 -79
  3. package/dist/_shared/credentials.js +166 -187
  4. package/dist/_shared/env-core/env.js +395 -0
  5. package/dist/_shared/env-core/reuse-secrets.js +179 -0
  6. package/dist/_shared/paths.js +129 -126
  7. package/dist/_shared/profiles.js +192 -242
  8. package/dist/_shared/secure_file.js +36 -38
  9. package/dist/_virtual/_rolldown/runtime.js +13 -0
  10. package/dist/analytics.js +163 -207
  11. package/dist/api.js +815 -758
  12. package/dist/auth.js +121 -141
  13. package/dist/auth_context.js +39 -53
  14. package/dist/cli.js +4 -7
  15. package/dist/commands/api.js +220 -250
  16. package/dist/commands/api_keys.js +251 -314
  17. package/dist/commands/auth.js +283 -328
  18. package/dist/commands/bootstrap.js +372 -437
  19. package/dist/commands/branches.js +304 -455
  20. package/dist/commands/bucket.js +374 -514
  21. package/dist/commands/checkout.js +213 -298
  22. package/dist/commands/config.js +575 -658
  23. package/dist/commands/connection_string.js +137 -165
  24. package/dist/commands/data_api.js +238 -260
  25. package/dist/commands/databases.js +67 -76
  26. package/dist/commands/deploy.js +31 -25
  27. package/dist/commands/dev.js +642 -681
  28. package/dist/commands/diff.js +156 -200
  29. package/dist/commands/env.js +243 -303
  30. package/dist/commands/functions.js +275 -341
  31. package/dist/commands/index.js +70 -65
  32. package/dist/commands/init.js +84 -119
  33. package/dist/commands/inspect.js +55 -55
  34. package/dist/commands/ip_allow.js +88 -120
  35. package/dist/commands/link.js +874 -1019
  36. package/dist/commands/logs.js +291 -0
  37. package/dist/commands/neon_auth.js +725 -933
  38. package/dist/commands/operations.js +34 -25
  39. package/dist/commands/orgs.js +28 -18
  40. package/dist/commands/profile.js +614 -845
  41. package/dist/commands/projects.js +313 -373
  42. package/dist/commands/psql.js +60 -58
  43. package/dist/commands/roles.js +55 -58
  44. package/dist/commands/schema_diff.js +87 -131
  45. package/dist/commands/set_context.js +34 -26
  46. package/dist/commands/snapshots.js +288 -413
  47. package/dist/commands/status.js +41 -37
  48. package/dist/commands/user.js +21 -10
  49. package/dist/commands/vpc_endpoints.js +85 -113
  50. package/dist/config.js +7 -6
  51. package/dist/config_format.js +50 -66
  52. package/dist/config_template.js +128 -157
  53. package/dist/context.js +183 -235
  54. package/dist/current_branch_fast_path.js +40 -49
  55. package/dist/dev/env.js +313 -394
  56. package/dist/dev/functions.js +54 -64
  57. package/dist/dev/inputs.js +46 -58
  58. package/dist/dev/runtime.js +135 -164
  59. package/dist/dev/websocket.js +766 -959
  60. package/dist/env.js +27 -33
  61. package/dist/env_file.js +118 -132
  62. package/dist/env_services.js +36 -38
  63. package/dist/errors.js +57 -68
  64. package/dist/functions_api.js +45 -43
  65. package/dist/help.js +189 -140
  66. package/dist/index.js +182 -257
  67. package/dist/init/agents.js +137 -118
  68. package/dist/init/auth.js +58 -68
  69. package/dist/init/bootstrap.js +325 -396
  70. package/dist/init/build_config.js +4 -2
  71. package/dist/init/detect_agent.js +56 -101
  72. package/dist/init/editors.js +35 -52
  73. package/dist/init/enrich_output.js +51 -66
  74. package/dist/init/extension.js +134 -171
  75. package/dist/init/inspect.js +179 -266
  76. package/dist/init/interactive.js +510 -622
  77. package/dist/init/neonctl.js +117 -168
  78. package/dist/init/orchestrate.js +157 -173
  79. package/dist/init/phases/auth.js +188 -202
  80. package/dist/init/phases/cleanup.js +23 -23
  81. package/dist/init/phases/db.js +251 -277
  82. package/dist/init/phases/getting_started.js +213 -223
  83. package/dist/init/phases/mcp.js +174 -224
  84. package/dist/init/phases/migrations.js +247 -248
  85. package/dist/init/phases/neon_auth.js +114 -133
  86. package/dist/init/phases/setup.js +546 -703
  87. package/dist/init/phases/skills.js +75 -86
  88. package/dist/init/phases/status.js +72 -67
  89. package/dist/init/resolve_context.js +102 -99
  90. package/dist/init/route_command.js +91 -98
  91. package/dist/init/skills.js +174 -218
  92. package/dist/init/vsix.js +77 -99
  93. package/dist/log.js +17 -16
  94. package/dist/neon_services.js +104 -129
  95. package/dist/parameters.gen.js +481 -471
  96. package/dist/pkg.js +17 -19
  97. package/dist/profile_keys.js +44 -47
  98. package/dist/psql/cli.js +44 -47
  99. package/dist/psql/command/cmd_cond.js +231 -406
  100. package/dist/psql/command/cmd_connect.js +557 -764
  101. package/dist/psql/command/cmd_copy.js +727 -983
  102. package/dist/psql/command/cmd_describe.js +1499 -1688
  103. package/dist/psql/command/cmd_format.js +733 -905
  104. package/dist/psql/command/cmd_io.js +1293 -2082
  105. package/dist/psql/command/cmd_lo.js +297 -359
  106. package/dist/psql/command/cmd_meta.js +727 -878
  107. package/dist/psql/command/cmd_misc.js +138 -172
  108. package/dist/psql/command/cmd_pipeline.js +547 -1099
  109. package/dist/psql/command/cmd_restrict.js +119 -155
  110. package/dist/psql/command/cmd_show.js +529 -688
  111. package/dist/psql/command/dispatch.js +261 -325
  112. package/dist/psql/command/inputQueue.js +35 -33
  113. package/dist/psql/command/shared.js +49 -63
  114. package/dist/psql/complete/filenames.js +90 -133
  115. package/dist/psql/complete/index.js +59 -97
  116. package/dist/psql/complete/matcher.js +236 -300
  117. package/dist/psql/complete/psqlVars.js +218 -223
  118. package/dist/psql/complete/queries.js +159 -177
  119. package/dist/psql/complete/rules.js +1493 -2299
  120. package/dist/psql/core/common.js +762 -1180
  121. package/dist/psql/core/help.js +456 -546
  122. package/dist/psql/core/mainloop.js +692 -1302
  123. package/dist/psql/core/prompt.js +391 -408
  124. package/dist/psql/core/settings.js +429 -644
  125. package/dist/psql/core/sqlHelp.js +480 -554
  126. package/dist/psql/core/startup.js +626 -815
  127. package/dist/psql/core/syncVars.js +67 -110
  128. package/dist/psql/core/variables.js +156 -278
  129. package/dist/psql/describe/formatters.js +884 -1285
  130. package/dist/psql/describe/processNamePattern.js +173 -260
  131. package/dist/psql/describe/queries.js +1368 -2403
  132. package/dist/psql/describe/versionGate.js +32 -41
  133. package/dist/psql/index.js +1414 -1927
  134. package/dist/psql/io/history.js +232 -271
  135. package/dist/psql/io/input.js +103 -108
  136. package/dist/psql/io/lineEditor/buffer.js +238 -319
  137. package/dist/psql/io/lineEditor/complete.js +135 -213
  138. package/dist/psql/io/lineEditor/filename.js +139 -148
  139. package/dist/psql/io/lineEditor/index.js +653 -870
  140. package/dist/psql/io/lineEditor/keymap.js +544 -702
  141. package/dist/psql/io/lineEditor/vt100.js +294 -341
  142. package/dist/psql/io/pgpass.js +158 -187
  143. package/dist/psql/io/pgservice.js +146 -183
  144. package/dist/psql/io/psqlrc.js +328 -403
  145. package/dist/psql/print/aligned.js +1020 -1683
  146. package/dist/psql/print/asciidoc.js +180 -214
  147. package/dist/psql/print/crosstab.js +281 -442
  148. package/dist/psql/print/csv.js +48 -70
  149. package/dist/psql/print/html.js +195 -226
  150. package/dist/psql/print/json.js +75 -88
  151. package/dist/psql/print/latex.js +291 -364
  152. package/dist/psql/print/pager.js +171 -242
  153. package/dist/psql/print/troff.js +194 -226
  154. package/dist/psql/print/unaligned.js +69 -95
  155. package/dist/psql/print/units.js +167 -169
  156. package/dist/psql/scanner/slash.js +428 -483
  157. package/dist/psql/scanner/sql.js +445 -889
  158. package/dist/psql/scanner/stringutils.js +309 -379
  159. package/dist/psql/types/index.js +2 -7
  160. package/dist/psql/types/scanner.js +25 -22
  161. package/dist/psql/wire/connection.js +2042 -2803
  162. package/dist/psql/wire/copy.js +84 -100
  163. package/dist/psql/wire/notify.js +39 -59
  164. package/dist/psql/wire/pipeline.js +305 -518
  165. package/dist/psql/wire/protocol.js +349 -417
  166. package/dist/psql/wire/sasl.js +180 -265
  167. package/dist/psql/wire/tls.js +400 -561
  168. package/dist/storage_api.js +115 -129
  169. package/dist/test_utils/fixtures.js +94 -113
  170. package/dist/test_utils/oauth_server.js +10 -7
  171. package/dist/test_utils/project_dir.js +33 -0
  172. package/dist/utils/ai_gateway_notice.js +131 -162
  173. package/dist/utils/api_enums.js +21 -28
  174. package/dist/utils/auth.js +10 -4
  175. package/dist/utils/branch_notice.js +20 -19
  176. package/dist/utils/branch_picker.js +83 -89
  177. package/dist/utils/cli_name.js +15 -12
  178. package/dist/utils/compute_units.js +20 -27
  179. package/dist/utils/config_diff.js +127 -158
  180. package/dist/utils/enrichers.js +95 -148
  181. package/dist/utils/esbuild.js +133 -147
  182. package/dist/utils/flags.js +35 -47
  183. package/dist/utils/formats.js +8 -15
  184. package/dist/utils/git_diff.js +69 -80
  185. package/dist/utils/inspect_db.js +101 -143
  186. package/dist/utils/inspect_queries.js +179 -142
  187. package/dist/utils/middlewares.js +37 -44
  188. package/dist/utils/openapi.js +87 -99
  189. package/dist/utils/package_manager.js +312 -110
  190. package/dist/utils/point_in_time.js +49 -53
  191. package/dist/utils/psql.js +89 -106
  192. package/dist/utils/service_picker.js +55 -58
  193. package/dist/utils/string.js +5 -5
  194. package/dist/utils/ui.js +38 -55
  195. package/dist/utils/write_sync.js +26 -35
  196. package/dist/utils/zip.js +4 -3
  197. package/dist/writer.js +67 -87
  198. package/package.json +9 -7
@@ -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
- const s = stream;
24
- return Boolean(s.isTTY) && typeof s.setRawMode === "function";
24
+ const s = stream;
25
+ return Boolean(s.isTTY) && typeof s.setRawMode === "function";
25
26
  };
26
27
  /**
27
- * Read one line of input, optionally suppressing echo.
28
- *
29
- * - `echo: false` on a TTY → put the terminal in raw mode, echo nothing,
30
- * accumulate characters until Enter, then restore cooked mode. Used for
31
- * password entry (`\password`, `\prompt -`).
32
- * - `echo: true`, or any non-TTY input → a plain line read. On a non-TTY the
33
- * `echo` flag is a no-op: we still consume and return the line, matching
34
- * upstream `simple_prompt`'s behaviour with redirected stdin.
35
- *
36
- * The returned string excludes the trailing newline. EOF before any newline
37
- * resolves to whatever was typed so far (empty string if nothing).
38
- */
39
- export const readLine = (prompt, opts) => {
40
- const input = opts.input ?? process.stdin;
41
- const output = opts.output ?? process.stderr;
42
- if (!opts.echo && isRawCapableTty(input)) {
43
- return readNoEchoTty(prompt, input, output);
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
- const rl = createInterface({ input, output, terminal: false });
50
- return new Promise((resolve) => {
51
- let settled = false;
52
- const settle = (line) => {
53
- if (settled)
54
- return;
55
- settled = true;
56
- rl.close();
57
- resolve(line);
58
- };
59
- if (prompt.length > 0)
60
- output.write(prompt);
61
- // Resolve on the first complete line. Closing without one (EOF) yields ''.
62
- // We don't rely on `line` firing before `close`: whichever lands first
63
- // wins, and a buffered final line is delivered as a `line` event.
64
- rl.on("line", (l) => {
65
- settle(l);
66
- });
67
- rl.on("close", () => {
68
- settle("");
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
- * No-echo read on a raw-capable TTY. Mirrors upstream `simple_prompt`'s
74
- * echo-off branch: switch to raw mode, gather bytes, never echo them, and
75
- * restore on Enter / EOF / interrupt. Backspace edits the buffer; Ctrl-C and
76
- * Ctrl-D abort with whatever has been typed (empty on a clean Ctrl-C).
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
- return new Promise((resolve) => {
80
- if (prompt.length > 0)
81
- output.write(prompt);
82
- input.setRawMode(true);
83
- input.resume();
84
- input.setEncoding("utf8");
85
- let buf = "";
86
- const finish = (result) => {
87
- input.setRawMode(false);
88
- input.pause();
89
- input.removeListener("data", onData);
90
- // Terminate the (un-echoed) line the user couldn't see themselves type.
91
- output.write("\n");
92
- resolve(result);
93
- };
94
- const onData = (chunk) => {
95
- for (const ch of chunk) {
96
- if (ch === "\n" || ch === "\r") {
97
- finish(buf);
98
- return;
99
- }
100
- if (ch === "") {
101
- // Ctrl-C: cancel, return nothing.
102
- finish("");
103
- return;
104
- }
105
- if (ch === "") {
106
- // Ctrl-D (EOF): return what we have.
107
- finish(buf);
108
- return;
109
- }
110
- if (ch === "" || ch === "\b") {
111
- // DEL / Backspace: drop the last character.
112
- buf = buf.slice(0, -1);
113
- continue;
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 };