neon 2.1.2 → 2.29.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.
Files changed (166) hide show
  1. package/LICENSE.md +178 -0
  2. package/README.md +601 -0
  3. package/dist/analytics.js +156 -0
  4. package/dist/api.js +665 -0
  5. package/dist/auth.js +127 -0
  6. package/dist/callback.html +51 -0
  7. package/dist/cli.js +9 -0
  8. package/dist/commands/auth.js +214 -0
  9. package/dist/commands/bootstrap.js +481 -0
  10. package/dist/commands/branches.js +481 -0
  11. package/dist/commands/bucket.js +543 -0
  12. package/dist/commands/checkout.js +289 -0
  13. package/dist/commands/config.js +544 -0
  14. package/dist/commands/connection_string.js +172 -0
  15. package/dist/commands/data_api.js +285 -0
  16. package/dist/commands/databases.js +82 -0
  17. package/dist/commands/deploy.js +26 -0
  18. package/dist/commands/dev.js +698 -0
  19. package/dist/commands/env.js +166 -0
  20. package/dist/commands/functions.js +373 -0
  21. package/dist/commands/index.js +54 -0
  22. package/dist/commands/init.js +73 -0
  23. package/dist/commands/ip_allow.js +137 -0
  24. package/dist/commands/link.js +1121 -0
  25. package/dist/commands/neon_auth.js +1028 -0
  26. package/dist/commands/operations.js +28 -0
  27. package/dist/commands/orgs.js +24 -0
  28. package/dist/commands/projects.js +372 -0
  29. package/dist/commands/psql.js +62 -0
  30. package/dist/commands/roles.js +65 -0
  31. package/dist/commands/schema_diff.js +151 -0
  32. package/dist/commands/set_context.js +29 -0
  33. package/dist/commands/status.js +40 -0
  34. package/dist/commands/user.js +15 -0
  35. package/dist/commands/vpc_endpoints.js +134 -0
  36. package/dist/config.js +11 -0
  37. package/dist/config_format.js +72 -0
  38. package/dist/context.js +177 -0
  39. package/dist/current_branch_fast_path.js +55 -0
  40. package/dist/dev/env.js +240 -0
  41. package/dist/dev/functions.js +70 -0
  42. package/dist/dev/inputs.js +63 -0
  43. package/dist/dev/runtime.js +146 -0
  44. package/dist/env.js +36 -0
  45. package/dist/env_file.js +159 -0
  46. package/dist/errors.js +80 -0
  47. package/dist/functions_api.js +44 -0
  48. package/dist/help.js +146 -0
  49. package/dist/index.js +234 -0
  50. package/dist/log.js +18 -0
  51. package/dist/parameters.gen.js +480 -0
  52. package/dist/pkg.js +25 -0
  53. package/dist/psql/cli.js +53 -0
  54. package/dist/psql/command/cmd_cond.js +437 -0
  55. package/dist/psql/command/cmd_connect.js +820 -0
  56. package/dist/psql/command/cmd_copy.js +1035 -0
  57. package/dist/psql/command/cmd_describe.js +1815 -0
  58. package/dist/psql/command/cmd_format.js +922 -0
  59. package/dist/psql/command/cmd_io.js +2193 -0
  60. package/dist/psql/command/cmd_lo.js +393 -0
  61. package/dist/psql/command/cmd_meta.js +970 -0
  62. package/dist/psql/command/cmd_misc.js +187 -0
  63. package/dist/psql/command/cmd_pipeline.js +1148 -0
  64. package/dist/psql/command/cmd_restrict.js +171 -0
  65. package/dist/psql/command/cmd_show.js +766 -0
  66. package/dist/psql/command/dispatch.js +343 -0
  67. package/dist/psql/command/inputQueue.js +42 -0
  68. package/dist/psql/command/shared.js +71 -0
  69. package/dist/psql/complete/filenames.js +139 -0
  70. package/dist/psql/complete/index.js +104 -0
  71. package/dist/psql/complete/matcher.js +315 -0
  72. package/dist/psql/complete/psqlVars.js +247 -0
  73. package/dist/psql/complete/queries.js +493 -0
  74. package/dist/psql/complete/rules.js +2424 -0
  75. package/dist/psql/core/common.js +1253 -0
  76. package/dist/psql/core/help.js +576 -0
  77. package/dist/psql/core/mainloop.js +1360 -0
  78. package/dist/psql/core/prompt.js +440 -0
  79. package/dist/psql/core/settings.js +684 -0
  80. package/dist/psql/core/sqlHelp.js +1066 -0
  81. package/dist/psql/core/startup.js +846 -0
  82. package/dist/psql/core/syncVars.js +116 -0
  83. package/dist/psql/core/variables.js +287 -0
  84. package/dist/psql/describe/formatters.js +1290 -0
  85. package/dist/psql/describe/processNamePattern.js +270 -0
  86. package/dist/psql/describe/queries.js +2378 -0
  87. package/dist/psql/describe/versionGate.js +43 -0
  88. package/dist/psql/index.js +2030 -0
  89. package/dist/psql/io/history.js +299 -0
  90. package/dist/psql/io/input.js +120 -0
  91. package/dist/psql/io/lineEditor/buffer.js +325 -0
  92. package/dist/psql/io/lineEditor/complete.js +227 -0
  93. package/dist/psql/io/lineEditor/filename.js +159 -0
  94. package/dist/psql/io/lineEditor/index.js +894 -0
  95. package/dist/psql/io/lineEditor/keymap.js +745 -0
  96. package/dist/psql/io/lineEditor/vt100.js +363 -0
  97. package/dist/psql/io/pgpass.js +202 -0
  98. package/dist/psql/io/pgservice.js +194 -0
  99. package/dist/psql/io/psqlrc.js +422 -0
  100. package/dist/psql/print/aligned.js +1765 -0
  101. package/dist/psql/print/asciidoc.js +248 -0
  102. package/dist/psql/print/crosstab.js +463 -0
  103. package/dist/psql/print/csv.js +95 -0
  104. package/dist/psql/print/html.js +258 -0
  105. package/dist/psql/print/json.js +96 -0
  106. package/dist/psql/print/latex.js +396 -0
  107. package/dist/psql/print/pager.js +267 -0
  108. package/dist/psql/print/troff.js +258 -0
  109. package/dist/psql/print/unaligned.js +119 -0
  110. package/dist/psql/print/units.js +135 -0
  111. package/dist/psql/scanner/slash.js +515 -0
  112. package/dist/psql/scanner/sql.js +914 -0
  113. package/dist/psql/scanner/stringutils.js +394 -0
  114. package/dist/psql/types/backslash.js +1 -0
  115. package/dist/psql/types/connection.js +1 -0
  116. package/dist/psql/types/index.js +7 -0
  117. package/dist/psql/types/printer.js +1 -0
  118. package/dist/psql/types/repl.js +1 -0
  119. package/dist/psql/types/scanner.js +24 -0
  120. package/dist/psql/types/settings.js +1 -0
  121. package/dist/psql/types/variables.js +1 -0
  122. package/dist/psql/wire/connection.js +2858 -0
  123. package/dist/psql/wire/copy.js +108 -0
  124. package/dist/psql/wire/notify.js +59 -0
  125. package/dist/psql/wire/pipeline.js +521 -0
  126. package/dist/psql/wire/protocol.js +466 -0
  127. package/dist/psql/wire/sasl.js +296 -0
  128. package/dist/psql/wire/tls.js +602 -0
  129. package/dist/storage_api.js +147 -0
  130. package/dist/test_utils/fixtures.js +122 -0
  131. package/dist/test_utils/oauth_server.js +9 -0
  132. package/dist/types.js +1 -0
  133. package/dist/utils/api_enums.js +33 -0
  134. package/dist/utils/auth.js +5 -0
  135. package/dist/utils/branch_notice.js +22 -0
  136. package/dist/utils/branch_picker.js +103 -0
  137. package/dist/utils/compute_units.js +28 -0
  138. package/dist/utils/enrichers.js +161 -0
  139. package/dist/utils/esbuild.js +158 -0
  140. package/dist/utils/formats.js +18 -0
  141. package/dist/utils/middlewares.js +20 -0
  142. package/dist/utils/package_manager.js +68 -0
  143. package/dist/utils/point_in_time.js +56 -0
  144. package/dist/utils/psql.js +120 -0
  145. package/dist/utils/string.js +5 -0
  146. package/dist/utils/ui.js +59 -0
  147. package/dist/utils/zip.js +4 -0
  148. package/dist/writer.js +97 -0
  149. package/package.json +117 -14
  150. package/.jshintrc +0 -3
  151. package/CHANGELOG.markdown +0 -22
  152. package/LICENSE +0 -21
  153. package/README.markdown +0 -76
  154. package/bower.json +0 -23
  155. package/license.txt +0 -9
  156. package/neon.js +0 -234
  157. package/stdlib/bubbling_support.js +0 -32
  158. package/stdlib/custom_event.js +0 -54
  159. package/stdlib/custom_event_support.js +0 -195
  160. package/stdlib/index.js +0 -7
  161. package/stdlib/node_support.js +0 -123
  162. package/stdlib/widget.js +0 -340
  163. package/test/neon_browser.html +0 -11
  164. package/test/neon_stdlib_browser.html +0 -15
  165. package/test/neon_stdlib_test.js +0 -84
  166. package/test/neon_test.js +0 -64
@@ -0,0 +1,137 @@
1
+ import { log } from "../log.js";
2
+ import { projectUpdateRequest } from "../parameters.gen.js";
3
+ import { fillSingleProject } from "../utils/enrichers.js";
4
+ import { writer } from "../writer.js";
5
+ const IP_ALLOW_FIELDS = [
6
+ "id",
7
+ "name",
8
+ "IP_addresses",
9
+ "protected_branches_only",
10
+ ];
11
+ export const command = "ip-allow";
12
+ export const describe = "Manage IP Allow";
13
+ export const builder = (argv) => {
14
+ return argv
15
+ .usage("$0 ip-allow <sub-command> [options]")
16
+ .options({
17
+ "project-id": {
18
+ describe: "Project ID",
19
+ type: "string",
20
+ },
21
+ })
22
+ .middleware(fillSingleProject)
23
+ .command("list", "List the IP allowlist", (yargs) => yargs, async (args) => {
24
+ await list(args);
25
+ })
26
+ .command("add [ips...]", "Add IP addresses to the IP allowlist", (yargs) => yargs
27
+ .usage("$0 ip-allow add [ips...]")
28
+ .positional("ips", {
29
+ describe: "The list of IP addresses to add",
30
+ type: "string",
31
+ default: [],
32
+ array: true,
33
+ })
34
+ .options({
35
+ "protected-only": {
36
+ describe: projectUpdateRequest["project.settings.allowed_ips.protected_branches_only"].description,
37
+ type: "boolean",
38
+ },
39
+ }), async (args) => {
40
+ await add(args);
41
+ })
42
+ .command("remove [ips...]", "Remove IP addresses from the IP allowlist", (yargs) => yargs.usage("$0 ip-allow remove [ips...]").positional("ips", {
43
+ describe: "The list of IP addresses to remove",
44
+ type: "string",
45
+ default: [],
46
+ array: true,
47
+ }), async (args) => {
48
+ await remove(args);
49
+ })
50
+ .command("reset [ips...]", "Reset the IP allowlist", (yargs) => yargs.usage("$0 ip-allow reset [ips...]").positional("ips", {
51
+ describe: "The list of IP addresses to reset",
52
+ type: "string",
53
+ default: [],
54
+ array: true,
55
+ }), async (args) => {
56
+ await reset(args);
57
+ });
58
+ };
59
+ export const handler = (args) => {
60
+ return args;
61
+ };
62
+ const list = async (props) => {
63
+ const { data } = await props.apiClient.getProject(props.projectId);
64
+ writer(props).end(parse(data.project), {
65
+ fields: IP_ALLOW_FIELDS,
66
+ });
67
+ };
68
+ const add = async (props) => {
69
+ if (props.ips.length <= 0) {
70
+ throw new Error(`Enter individual IP addresses, define ranges with a dash, or use CIDR notation for more flexibility.
71
+ Example: neonctl ip-allow add 192.168.1.1, 192.168.1.20-192.168.1.50, 192.168.1.0/24 --project-id <id>`);
72
+ }
73
+ const project = {};
74
+ const { data } = await props.apiClient.getProject(props.projectId);
75
+ const existingAllowedIps = data.project.settings?.allowed_ips;
76
+ project.settings = {
77
+ allowed_ips: {
78
+ ips: [...new Set(props.ips.concat(existingAllowedIps?.ips ?? []))],
79
+ protected_branches_only: props.protectedOnly ??
80
+ existingAllowedIps?.protected_branches_only ??
81
+ false,
82
+ },
83
+ };
84
+ const { data: response } = await props.apiClient.updateProject(props.projectId, {
85
+ project,
86
+ });
87
+ writer(props).end(parse(response.project), {
88
+ fields: IP_ALLOW_FIELDS,
89
+ });
90
+ };
91
+ const remove = async (props) => {
92
+ if (props.ips.length <= 0) {
93
+ throw new Error(`Remove individual IP addresses and ranges. Example: neonctl ip-allow remove 192.168.1.1 --project-id <id>`);
94
+ }
95
+ const project = {};
96
+ const { data } = await props.apiClient.getProject(props.projectId);
97
+ const existingAllowedIps = data.project.settings?.allowed_ips;
98
+ project.settings = {
99
+ allowed_ips: {
100
+ ips: existingAllowedIps?.ips?.filter((ip) => !props.ips.includes(ip)) ?? [],
101
+ protected_branches_only: existingAllowedIps?.protected_branches_only ?? false,
102
+ },
103
+ };
104
+ const { data: response } = await props.apiClient.updateProject(props.projectId, {
105
+ project,
106
+ });
107
+ writer(props).end(parse(response.project), {
108
+ fields: IP_ALLOW_FIELDS,
109
+ });
110
+ };
111
+ const reset = async (props) => {
112
+ const project = {};
113
+ project.settings = {
114
+ allowed_ips: {
115
+ ips: props.ips,
116
+ protected_branches_only: false,
117
+ },
118
+ };
119
+ const { data } = await props.apiClient.updateProject(props.projectId, {
120
+ project,
121
+ });
122
+ writer(props).end(parse(data.project), {
123
+ fields: IP_ALLOW_FIELDS,
124
+ });
125
+ if (props.ips.length <= 0) {
126
+ log.info(`The IP allowlist has been reset. All databases on project "${data.project.name}" are now exposed to the internet`);
127
+ }
128
+ };
129
+ const parse = (project) => {
130
+ const ips = project.settings?.allowed_ips?.ips ?? [];
131
+ return {
132
+ id: project.id,
133
+ name: project.name,
134
+ IP_addresses: ips,
135
+ protected_branches_only: project.settings?.allowed_ips?.protected_branches_only ?? false,
136
+ };
137
+ };