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/README.md
CHANGED
|
@@ -421,9 +421,9 @@ The human-readable summary line goes to stderr and the diff body to stdout, so `
|
|
|
421
421
|
|
|
422
422
|
**What gets pulled**, in precedence order:
|
|
423
423
|
|
|
424
|
-
1. **`--service`**, when you pass
|
|
424
|
+
1. **`--service` and/or `--env`**, when you pass either — their union is the complete selection, ignoring `neon.ts` and unselected branch variables. `--service` adds a service's complete variable bundle; `--env` adds only the individual variables you name.
|
|
425
425
|
2. **`neon.ts`**, when the working directory has one — the policy is the source of truth, same as `neon dev` and `neon deploy`.
|
|
426
|
-
3. **Everything the branch has** otherwise — Postgres, Neon Auth, the Data API, and object storage read back from the branch, plus the AI Gateway. The gateway has no branch-level state to read back
|
|
426
|
+
3. **Everything the branch has** otherwise — Postgres, Neon Auth, the Data API, and object storage read back from the branch, plus the AI Gateway. The gateway has no branch-level state to read back, so a bare `env pull` asks for it rather than detecting it and may mint a branch credential. To leave it out, name only what you do want with `--service` and/or `--env`.
|
|
427
427
|
|
|
428
428
|
If the gateway can't be resolved, it is dropped with a warning and the rest of the pull still lands. Gateway variables already in your file for *this* branch are left alone — a pull that couldn't reach the gateway is no evidence the branch has stopped having one — while ones left over from a different branch are pruned like any other stale value.
|
|
429
429
|
|
|
@@ -440,6 +440,13 @@ neon env pull --service ai-gateway
|
|
|
440
440
|
# Repeat the flag or comma-separate; -s, --service and --services are all accepted
|
|
441
441
|
neon env pull -s postgres -s data-api
|
|
442
442
|
neon env pull -s postgres,auth
|
|
443
|
+
|
|
444
|
+
# Pull one exact variable; repeat -e or comma-separate for more
|
|
445
|
+
neon env pull -e DATABASE_URL
|
|
446
|
+
neon env pull -e DATABASE_URL,NEON_AUTH_BASE_URL
|
|
447
|
+
|
|
448
|
+
# The selectors compose as a union: all Auth vars plus DATABASE_URL
|
|
449
|
+
neon env pull -s auth -e DATABASE_URL
|
|
443
450
|
```
|
|
444
451
|
|
|
445
452
|
Every services flag in the CLI takes those three spellings, the same value syntax, and the same service names — see [`config init --services`](#getting-a-neonts-config-init).
|
|
@@ -452,11 +459,15 @@ Every services flag in the CLI takes those three spellings, the same value synta
|
|
|
452
459
|
| `object-storage` | `AWS_ACCESS_KEY_ID`, `AWS_SECRET_ACCESS_KEY`, `AWS_ENDPOINT_URL_S3`, `AWS_REGION` |
|
|
453
460
|
| `ai-gateway` | `NEON_AI_GATEWAY_TOKEN`, `NEON_AI_GATEWAY_BASE_URL` |
|
|
454
461
|
|
|
455
|
-
`NEON_BRANCH` is written by
|
|
462
|
+
`-e, --env` accepts any variable in the table plus `NEON_BRANCH`. It is case-sensitive and rejects unknown names rather than silently widening the pull. `NEON_BRANCH` is written by unscoped and service-scoped pulls because it is branch identity, not a service; an env-only pull writes it only when you select it.
|
|
463
|
+
|
|
464
|
+
`--env` never narrows `--service`: `neon env pull -s postgres -e DATABASE_URL` still pulls the complete Postgres bundle (`DATABASE_URL`, `DATABASE_URL_UNPOOLED`, and `NEON_BRANCH`). The two selectors always form a union.
|
|
465
|
+
|
|
466
|
+
**A scoped pull is scoped in both directions.** An unscoped `env pull` owns the Neon-named variables: pointing a directory at a branch without Neon Auth prunes the stale `NEON_AUTH_*` lines. `--service` narrows that to the services you named, while `--env` narrows it to the exact keys you named, so `env pull -e DATABASE_URL` never touches `DATABASE_URL_UNPOOLED`. (`AWS_*` is never pruned by any pull: those names collide with credentials you may set yourself, so `env pull` only ever writes them.)
|
|
456
467
|
|
|
457
|
-
**A scoped pull
|
|
468
|
+
**A scoped pull also never revokes a credential.** Where an unscoped pull revokes the credential it replaces, a scoped one leaves the old one live — it can't tell which other variables still use it. It says so when it happens; revoke it in the Neon Console if nothing does.
|
|
458
469
|
|
|
459
|
-
|
|
470
|
+
`AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` must be selected together. Neon issues them as one object-storage credential; pulling only one would pair a fresh half with whatever old half remains in the file.
|
|
460
471
|
|
|
461
472
|
Naming a service the branch does not have is an error, not an empty pull:
|
|
462
473
|
|
|
@@ -743,6 +754,59 @@ neon snapshots schedule set --branch main --schedule '[{"frequency":"weekly","da
|
|
|
743
754
|
|
|
744
755
|
All sub-commands honor the [global options](#global-options), including `--output json|yaml|table`.
|
|
745
756
|
|
|
757
|
+
## Logs (`logs`)
|
|
758
|
+
|
|
759
|
+
`neon logs` reads the log records the services on a branch emit — Neon Functions, object storage, and Postgres computes. **Logs require Neon Platform Beta and are currently available only for projects in `aws-us-east-2`.**
|
|
760
|
+
|
|
761
|
+
Every sub-command resolves the project through the standard chain (`--project-id`, then the `.neon` context file, then a single-project auto-detect), and takes `--branch <id|name>`, defaulting to the project's default branch. `logs query` searches the previous hour by default; `logs field-values` searches the previous six hours. The maximum time window is seven days.
|
|
762
|
+
|
|
763
|
+
```bash
|
|
764
|
+
# The last 30 minutes on the default branch
|
|
765
|
+
neon logs query --since 30m
|
|
766
|
+
|
|
767
|
+
# Postgres compute errors on main, oldest first
|
|
768
|
+
neon logs query --branch main --source pg_endpoint --minimum-severity error --sort-order asc
|
|
769
|
+
|
|
770
|
+
# An explicit window (--start-time replaces --since; --end-time works with either)
|
|
771
|
+
neon logs query --start-time 2025-01-01T00:00:00Z --end-time 2025-01-01T01:00:00Z
|
|
772
|
+
|
|
773
|
+
# One request trace, across every service that took part in it
|
|
774
|
+
neon logs query --trace-id 4bf92f3577b34da6a3ce929d0e0e4736
|
|
775
|
+
|
|
776
|
+
# What the structured filters cannot express: a raw LogQL selection. It replaces
|
|
777
|
+
# them, but the window, --limit, --sort-order and --cursor still apply.
|
|
778
|
+
neon logs query --since 1h --logql '{entity_type="function"} |= "timeout"'
|
|
779
|
+
|
|
780
|
+
# Which fields this branch supports, and the values it has actually seen
|
|
781
|
+
neon logs fields
|
|
782
|
+
neon logs field-values service_name --since 6h --source function
|
|
783
|
+
```
|
|
784
|
+
|
|
785
|
+
A response holds at most `--limit` records (1–1000; default 100). When more matched, table output prints the `--cursor` to repeat the same query with; `--output json|yaml` returns `is_truncated` and `next_cursor` on the envelope instead, so nothing but the payload lands on stdout. Table output shows the common fields; use structured output for the complete records:
|
|
786
|
+
|
|
787
|
+
```console
|
|
788
|
+
$ neon logs query --since 24h --output json
|
|
789
|
+
{
|
|
790
|
+
"logs": [
|
|
791
|
+
{
|
|
792
|
+
"timestamp": "2025-01-01T00:00:02.000Z",
|
|
793
|
+
"message": "GET /api/todos 200",
|
|
794
|
+
"source": "function",
|
|
795
|
+
"service_name": "api",
|
|
796
|
+
"severity_text": "INFO",
|
|
797
|
+
"trace_id": "4bf92f3577b34da6a3ce929d0e0e4736",
|
|
798
|
+
"attributes": { "http_status": 200 }
|
|
799
|
+
}
|
|
800
|
+
],
|
|
801
|
+
"next_cursor": "eyJvZmZzZXQiOjEwMH0",
|
|
802
|
+
"is_truncated": true
|
|
803
|
+
}
|
|
804
|
+
```
|
|
805
|
+
|
|
806
|
+
Two combinations are rejected before the request: `--since` with `--start-time`, and `--logql` with any of `--source`, `--service-name`, `--scope-name`, `--minimum-severity`, `--severity-text`, `--body-contains` or `--trace-id`. `--minimum-severity` and `--severity-text` are independent filters and combine with AND. If Neon reports that `--minimum-severity` is unsupported, use `--severity-text` instead; `neon logs field-values severity_text` lists the exact values present on a branch.
|
|
807
|
+
|
|
808
|
+
`--body-contains` compares a case-sensitive substring against the rendered message. Structured bodies, including object storage records, are rendered as compact JSON, so match the JSON form (for example, `"http_status":200`).
|
|
809
|
+
|
|
746
810
|
## Profiles
|
|
747
811
|
|
|
748
812
|
The CLI holds one Neon account by default. A profile adds another, and is nothing more than a pointer to a credentials file:
|
|
@@ -971,6 +1035,7 @@ API keys in org-7
|
|
|
971
1035
|
| function | `deploy`, `list`, `get`, `delete` | Manage Neon Functions |
|
|
972
1036
|
| [roles](https://neon.com/docs/reference/cli-roles) | `list`, `create`, `delete` | Manage roles |
|
|
973
1037
|
| [operations](https://neon.com/docs/reference/cli-operations) | `list` | Manage operations |
|
|
1038
|
+
| logs | `query`, `fields`, `field-values` | Query branch logs (Beta) |
|
|
974
1039
|
| snapshots | `list`, `get`, `create`, `update`, `delete`, `restore`, `finalize`, `schedule get`, `schedule set` | Manage snapshots |
|
|
975
1040
|
| [connection-string](https://neon.com/docs/reference/cli-connection-string) | | Get connection string |
|
|
976
1041
|
| [psql](https://neon.com/docs/reference/cli-psql) | | Connect to a database via psql |
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import "./profiles-Ir29rqns.js";
|
|
2
|
+
//#region ../../internals/cli-core/dist/auth_selection.js
|
|
3
|
+
/**
|
|
4
|
+
* # Which credential an invocation authenticates with
|
|
5
|
+
*
|
|
6
|
+
* Four inputs can each answer "who am I": the `--api-key` flag, `NEON_API_KEY`, the
|
|
7
|
+
* `--profile` flag, and `NEON_PROFILE`. This module decides between them, and it is pure so
|
|
8
|
+
* the decision can be tested without a filesystem, a network, or a config directory.
|
|
9
|
+
*
|
|
10
|
+
* ## The rule
|
|
11
|
+
*
|
|
12
|
+
* **An explicit flag beats an ambient environment variable.** That single rule fixes the bug
|
|
13
|
+
* this module exists for: before it, any API key — including one merely exported into the
|
|
14
|
+
* shell — silently voided `--profile`, so `neon --profile work …` would quietly run as
|
|
15
|
+
* whoever `NEON_API_KEY` belonged to and say nothing about it.
|
|
16
|
+
*
|
|
17
|
+
* | Given | What runs |
|
|
18
|
+
* | --- | --- |
|
|
19
|
+
* | `--api-key` and `--profile` | neither: contradictory explicit flags, so this throws |
|
|
20
|
+
* | `--api-key` and `NEON_PROFILE` | the flag's key |
|
|
21
|
+
* | `--profile` and `NEON_API_KEY` | the profile |
|
|
22
|
+
* | `NEON_API_KEY` and `NEON_PROFILE` | the key, and the ignored profile is named in a warning |
|
|
23
|
+
* | `--profile` or `NEON_PROFILE` alone | that profile |
|
|
24
|
+
* | nothing | `DEFAULT` |
|
|
25
|
+
*
|
|
26
|
+
* Two explicit flags throw rather than picking a winner. They express different intents —
|
|
27
|
+
* `--api-key` supplies a credential, `--profile` selects a stored one — so there is no
|
|
28
|
+
* reading of the command that makes both true, and guessing is how the original bug behaved.
|
|
29
|
+
*
|
|
30
|
+
* When both are merely ambient, the key wins. That keeps CI exactly as it was: a pipeline
|
|
31
|
+
* that injects `NEON_API_KEY` must not change behaviour because a `NEON_PROFILE` leaked into
|
|
32
|
+
* the environment. It warns instead of staying silent, because a disregarded account
|
|
33
|
+
* selection is precisely what nobody noticed last time.
|
|
34
|
+
*
|
|
35
|
+
* `auth` and the `profile` subcommands do not use any of this. They read the same flags with
|
|
36
|
+
* different meanings — `neon auth --profile work` names where to *write* a credential, and
|
|
37
|
+
* `neon profile create work --api-key …` names one to *store* — so their callers skip
|
|
38
|
+
* selection entirely rather than passing exemptions down here.
|
|
39
|
+
*/
|
|
40
|
+
let inputs = {
|
|
41
|
+
apiKeyFlag: "",
|
|
42
|
+
apiKeyEnv: "",
|
|
43
|
+
profileEnv: ""
|
|
44
|
+
};
|
|
45
|
+
const recordCredentialInputs = (recorded) => {
|
|
46
|
+
inputs = recorded;
|
|
47
|
+
};
|
|
48
|
+
const credentialInputs = () => inputs;
|
|
49
|
+
const selectCredential = ({ apiKeyFlag, profileFlag, apiKeyEnv, profileEnv }) => {
|
|
50
|
+
const flagKey = nonEmpty(apiKeyFlag);
|
|
51
|
+
const flagProfile = nonEmpty(profileFlag);
|
|
52
|
+
if (flagKey !== void 0 && flagProfile !== void 0) throw new Error("Pass either --api-key or --profile, not both. --api-key supplies a credential directly; --profile selects a stored one.");
|
|
53
|
+
if (flagKey !== void 0) return {
|
|
54
|
+
source: "explicit-api-key",
|
|
55
|
+
apiKey: flagKey
|
|
56
|
+
};
|
|
57
|
+
if (flagProfile !== void 0) return {
|
|
58
|
+
source: "profile",
|
|
59
|
+
profile: flagProfile,
|
|
60
|
+
explicit: true
|
|
61
|
+
};
|
|
62
|
+
const envKey = nonEmpty(apiKeyEnv);
|
|
63
|
+
const envProfile = nonEmpty(profileEnv);
|
|
64
|
+
if (envKey !== void 0) return {
|
|
65
|
+
source: "ambient-api-key",
|
|
66
|
+
apiKey: envKey,
|
|
67
|
+
...envProfile !== void 0 ? { ignoredProfile: envProfile } : {}
|
|
68
|
+
};
|
|
69
|
+
return {
|
|
70
|
+
source: "profile",
|
|
71
|
+
profile: envProfile ?? "DEFAULT",
|
|
72
|
+
explicit: envProfile !== void 0
|
|
73
|
+
};
|
|
74
|
+
};
|
|
75
|
+
/** The warning for an ambient key that displaced an ambient profile, or `null`. */
|
|
76
|
+
const displacedProfileWarning = (selection) => selection.source === "ambient-api-key" && selection.ignoredProfile !== void 0 ? `NEON_API_KEY is set, so profile "${selection.ignoredProfile}" from NEON_PROFILE was ignored. Pass --profile ${selection.ignoredProfile} to use it instead.` : null;
|
|
77
|
+
function nonEmpty(value) {
|
|
78
|
+
if (typeof value !== "string") return void 0;
|
|
79
|
+
const trimmed = value.trim();
|
|
80
|
+
return trimmed === "" ? void 0 : trimmed;
|
|
81
|
+
}
|
|
82
|
+
//#endregion
|
|
83
|
+
export { selectCredential as i, displacedProfileWarning as n, recordCredentialInputs as r, credentialInputs as t };
|